shiro 认证失败跳转的问题

时间:2022-11-09 19:07:40
现在做一个项目,用的是springboot + shiro ,做登录的功能,登录成功是没问题的,跳转到了successUrl 指定的地址,但我现在考虑如果登录失败呢,所以我尝试了一下随便输入一个密码,结果跳转到了error的页面,但我希望密码错误的时候因该回到登录页面才对。

然后我就发现了一个问题,我自定义了realm,我打断点后发现不管是登录成功还是失败都是直接走的realm的 doGetAuthenticationInfo 方法,而没有进入loginController 里面的login方法,这点我非常疑惑,因为我发现网上的案例不管是谁都是有写login这个方法的,但是如果不经过这个方法就能完成认证的过程,那这个login方法为什么还要写呢?

我本来是以为如果登录失败shiro方面会自动转到login方法里,然后在login方法里可以验证是密码错误还是帐号不存在等问题,在将信息写到登录页面上。

请大家指点一下迷津。


6 个解决方案

#1


shiro 认证失败跳转的问题shiro 认证失败跳转的问题shiro 认证失败跳转的问题shiro 认证失败跳转的问题

#2


上面是相关代码,请大神们帮我看看

#3


给你参考下我们的项目

try {
Subject subject = ShiroUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
subject.login(token);
} catch (UnknownAccountException e) {
return e.getMessage();
} catch (IncorrectCredentialsException e) {
return "账号或密码不正确";
} catch (LockedAccountException e) {
return "账号被锁定";
} catch (AuthenticationException e) {
return "账号验证失败";
}
return "sucess";

#4


我上面success写错了,不过不影响

#5


之前用的是springMVC做的,是跟拦截器有关系的,springboot不太了解,刚接触。shiro正常的话,调用一个subObject方法后,都走到doGetAuthenticationInfo 。猜测是直接被shiro配置的拦截器拦截了,没有被控制器拦截

#6


拦截器链放开 /login  /index试试

#1


shiro 认证失败跳转的问题shiro 认证失败跳转的问题shiro 认证失败跳转的问题shiro 认证失败跳转的问题

#2


上面是相关代码,请大神们帮我看看

#3


给你参考下我们的项目

try {
Subject subject = ShiroUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
subject.login(token);
} catch (UnknownAccountException e) {
return e.getMessage();
} catch (IncorrectCredentialsException e) {
return "账号或密码不正确";
} catch (LockedAccountException e) {
return "账号被锁定";
} catch (AuthenticationException e) {
return "账号验证失败";
}
return "sucess";

#4


我上面success写错了,不过不影响

#5


之前用的是springMVC做的,是跟拦截器有关系的,springboot不太了解,刚接触。shiro正常的话,调用一个subObject方法后,都走到doGetAuthenticationInfo 。猜测是直接被shiro配置的拦截器拦截了,没有被控制器拦截

#6


拦截器链放开 /login  /index试试