1.shiro框架处理请求,首先会先经过AccessControlFilter的onPreHandle方法。
2.onPreHandle中
①isAccessAllowed:判断用户是否登录
在登录的情况下会走此方法,此方法返回true直接访问控制器;
②onAccessDenied:是否是拒绝登录
没有登录的情况下会走此方法。
根据源码所示,如果isAccessAllowed方法返回true,则不会再调用onAccessDenied方法,如果isAccessAllowed方法返回flase,则会继续调用onAccessDenied方法。
3.登录成功的用户,进入CasFilter的onLoginSuccess方法,执行onLoginSuccess方法,重定向到登录成功后的页面。可以继承CasFilter类,重写onLoginSuccess方法,根据自己的需求,最后重定向到getSuccessUrl()方法指定的页面。
4.没有登录的用户,进入UserFilter的onAccessDenied方法,执行saveRequestAndRedirectToLogin方法,执行saveRequest和redirectToLogin方法。
可以继承UserFilter类,重写onAccessDenied方法,自定义验证失败后的返回信息;
也可以继承UserFilter类,重写redirectToLogin方法,根据业务要求,重定向到登录页面。