sa-token/sa-token-doc/doc/more/common-questions.md
2021-03-30 01:28:57 +08:00

4.5 KiB
Raw Blame History

常见问题

本篇整理大家在群聊里经常提问的一些问题如有补充欢迎提交pr


加了注解进行鉴权认证,不生效?

注解鉴权功能默认关闭,两种方式任选其一进行打开:注册注解拦截器、集成AOP模块 如果已经打开仍然没有效果,加群说明一下复现步骤

整合Redis时除了引入pom依赖还需要做其它的吗

引入pom依赖后在框架层面你无须做其它事情但是你需要为项目指定一下Redis的连接信息,参考此文件:application-dev

登录方法需要我自己实现吗?

是的,不同于shiro等框架,sa-token不会在登录流程中强插一脚,开发者比对完用户的账号和密码之后,只需要调用StpUtil.setLogin(id)通知一下框架即可

一个User对象存进Session后再取出来时报错无法从User类型转换成User类型

群员亲测,当你打开热部署模式后,先存进去的对象,再热刷新后再取出,会报错,关闭热刷新即可解决

框架抛出的权限不足异常,我想根据自定义提示信息,可以吗?

可以,在全局异常拦截器里捕获NotPermissionException,可以通过getCode()获取没有通过认证的权限码,可以据此自定义返回信息

我的项目权限模型不是RBAC模型很复杂可以集成吗

无论什么模型只要能把一个用户具有的所有权限塞到一个List里返回给框架就能集成

SaRouterUtil.match 有多个路径需要排除怎么办?

可以点进去源码看一下,SaRouterUtil.match方法有多个重载,可以放一个集合, 例如:
SaRouterUtil.match(Arrays.asList("/**"), Arrays.asList("/login", "/reg"), () -> StpUtil.checkLogin());

为什么StpUtil.setLoginId() 不能直接写入一个User对象

StpUtil.setLoginId()只是为了给当前会话做个唯一标记,通常写入UserId即可如果要存储User对象可以使用StpUtil.getSession()获取Session对象进行存储

前后台分离模式下和普通模式有何不同?

主要是失去了Cookie无法自动化保存和提交token秘钥,可以参考章节:前后台分离

前后台分离时前端提交的header参数是叫token还是satoken还是tokenName

默认是satoken如果想换一个名字更改一下配置文件的tokenName即可

Springboot环境下采用自定义拦截器排除了某个路径仍然被拦截了

可能是404了SpringBoot环境下如果访问接口404后会被重定向到/error,然后被再次拦截,如果是其它原因,欢迎加群反馈

权限可以做成动态的吗?

权限本来就是动态的只有jwt那种模式才是非动态的

集成jwt后为什么在 getSession 时提示 jwt has not session ?

jwt的招牌便是无须借助服务端完成会话管理,如果集成jwt后再次使用Session功能,那将又回到了传统Session模式属于自断招牌此种技术组合没有任何意义因此jwt集成模式不提供Session功能,如果需要Session功能,就不要集成jwt

怎么关闭默认的Cookie模式呢

在配置文件将isReadCookie值配置为false

怎么关掉每次启动时的字符画打印?

在配置文件将isV值配置为false

StpUtil.getSession()必须登录后才能调用吗?如果我想在用户未登录之前存储一些数据应该怎么办?

StpUtil.getSession()获取的是User-Session必须登录后才能使用如果需要在未登录状态下也使用Session功能请使用Token-Session
步骤:先在配置文件里将tokenSessionCheckLogin配置为false,然后通过StpUtil.getTokenSession()获取Session

我只使用header来传输token还需要打开Cookie模式吗

不需要如果只使用header来传输token可以在配置文件关闭Cookie模式isReadCookie=false

我想让用户修改密码后立即掉线重新登录,应该怎么做?

框架内置 [强制指定账号下线] 的APi在执行修改密码逻辑之后调用此API即可: StpUtil.logout()

还是有不明白到的地方?

请在github提交issues或者加入qq群交流群链接在首页

我能为这个框架贡献代码吗?

可以请参照首页的提交pr步骤 贡献代码