shiro相同subject重复登录问题

刚学shiro不久,在相同的subject重复登录时,也就是登陆成功的subject再次登录时出现空指针异常.出现的位置是处理登陆失败的controller方法.

我往前追溯发现是shiro的filter在认证的时候是先通过isAceessAllowed()方法的实现进行判断是否已经登录认证的
而这个isAceessAllowed()方法的实现如下,其实是调用了当前subject的一个isAuthencated()方法


而,这个方法是获取一个叫做authenticated的boolean参数,这个参数就是代表当前subject是否登录的标志,当你登录成功时会被赋值为true

既然来龙去脉已经明白,那么言归正传,为什么会出现空指针异常呢?原来是subject已经登录,导致isAceessAllowed()判断为真,所以过滤器直接就放行了,而shiro的配置是登录的时候用POST方式处理,所以自然而然就跳到了处理登录页的POST的Controller中,而正常情况下shiro在认证错误抛出异常的时候会直接跳转到POST的controller中,而且我在controller中写了异常类型的判断.

由于是重复登录,并没有异常错误,所有exceptionName其实是null,而在异常类型判断的时候调用了equals()所有出现了空指针异常.

解决方法就是在异常判断之前先进行非空判断,如果为空则设置返回类型为重复登录就行了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值