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才能通过