shiro拦截器的执行流程
基于表单登录拦截器
onPreHandle主要流程:
1)首先判断是否已经登录过了,如果已经登录过了继续拦截器链即可;
2)如果没有登录,看看是否是登录请求,如果是get方法的登录页面请求,则继续拦截器链(到请求页面),否则如果是get方法的其他页面请求则保存当前请求并重定向到登录页面;
3)如果是post方法的登录页面表单提交请求,则收集用户名/密码登录即可,如果失败了保存 错误消息到“shiroLoginFailure”并返回到登录页面;
4)如果登录成功了,且之前有保存的请求,则重定向到之前的这个请求,否则到默认的成功 页面。
任意角色授权拦截器
流程:
1)首先判断用户有没有任意角色,如果没有返回false,将到onAccessDenied进行处理;
2)如果用户没有角色,接着判断用户有没有登录,如果没有登录先重定向到登录;
3)如果用户没有角色且设置了未授权页面(unauthorizedUrl),那么重定向到未授权页面;否则直接返回401未授权错误码。
默认拦截器
身份验证相关的
authc 基于表单的拦截器,即验证成功之后才能访问 /=authc authcBasic Basic HTTP身份验证拦截器,主要属性:applicationName logout 退出 /logout=logout
user 用户拦截器 /=user
anon 匿名拦截器,一般用于静态资源过滤 /static/=anon
授权相关的
roles 角色授权拦截器,主要属性:loginUrl,unauthorizedUrl /admin/=roles[admin] perms 权限授权拦截器 /user/=perms[“user:create”]
port 端口拦截器,主要属性: port(80) /test=port[80]
rest rest风格拦截器 /users=rest[user],会自动拼接出
“user:read,user:create,user:update,user:delete”
ssl ssl拦截器,只有请求协议是https才能通过