用户信息可以成功保存到 session,但是后面从 session 中获取不到
guoguocai opened this issue · 9 comments
执行语句 SecurityUtils.getSubject().getSession().setAttribute(ShiroConstant.SESSION_USER_INFO, user); 后,用户信息是成功保存上了的,但是后面再通过 (User) session.getAttribute(ShiroConstant.SESSION_USER_INFO); 获取时,结果为null
看看sessionId是不是变了。 是不是跨域导致sessionid变了
怎么获取 sessionId?为了解决跨域,后端确实有个配置类
SecurityUtils.getSubject().getSession().getId();
或者从浏览器看发出请求header中的jsessionid
sessionId 确实变了,上网搜了下解决方案,我加上了 withCredentials: true 参数,不管用;只能靠 token 或者 redis 了吗?我不太了解该用哪个方案
我也好几年不搞前端了,最近再搞一下发现貌似的确近期chrome更新了安全策略,你F12看看是不是response的header中有安全提醒。换火狐可以试试。
解决方案可以登陆后端返回一个token,前端在请求header中带上token。
其它更简单的解决跨域的方案可能要过阵子不忙了再去查下了
好的,感谢
不好意思,我又来请教了......
我现在的问题是:我通过 token 完成了用户认证,但是当请求添加了权限注解 @RequiresPermissions 的接口时,每次都直接返回:'code: "20011",msg: "登陆已过期,请重新登陆"',可是我明明已经用 token 认证过了,也完全没有进 AuthorizationAttributeSourceAdvisor 和授权方法 doGetAuthorizationInfo 里面去。
这是不是也是由于跨域引起的呢?然后让程序认为每个请求都是一个新的用户?
我也没有实践过,参考下 类似https://cloud.tencent.com/developer/article/1486323 这种shiro改造token的文章哈
好的,我研究下