【shiro】shiro 登陆Subject().login()与SecurityManager().login()

本文分享了一次Shiro跨域登录的实战经验,详细解释了SecurityUtils.getSubject().login(token)与SecurityManager().login(token)的区别。前者将登录信息绑定到当前线程,而后者仅在session中记录登录状态,但不与当前线程绑定,导致无法通过当前线程获取用户属性。
摘要由CSDN通过智能技术生成

今天踩坑,写一跨域登陆,

开始如下:

UsernamePasswordToken token = new UsernamePasswordToken(username, password);
SecurityUtils.getSecurityManager().login(SecurityUtils.getSubject(), token);

登陆是登陆成功了,但是后续获取SecurityUtils.getSubject().getPrincipal()始终为null,百思不得骑姐。各种改配置,各种重写,后来才发现是登陆这里写错了,特的写个博客,加深下映象。

SecurityUtils.getSubject().login(token);

 

从字面上还是很好理解的。Subject().login(token)在当前线程登陆用户,一但登陆成功就把登陆信息绑定到当前线程.

SecurityManager().login(token)这个通过安全管理器登陆用一个用户,登陆后在session中这个用户是已经登陆了,但不是指当前线程的用户登陆,所以通过当前线程去获取用户属性肯定就是没有了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值