一、shiro内置过滤器:
Shiro内置了很多默认的过滤器,比如:身份验证、授权等,默认过滤器可以参考“DefaultFilter”中的枚举过滤器:
package org.apache.shiro.web.filter.mgt; public enum DefaultFilter { anon(AnonymousFilter.class), authc(FormAuthenticationFilter.class), authcBasic(BasicHttpAuthenticationFilter.class), logout(LogoutFilter.class), noSessionCreation(NoSessionCreationFilter.class), perms(PermissionsAuthorizationFilter.class), port(PortFilter.class), rest(HttpMethodPermissionFilter.class), roles(RolesAuthorizationFilter.class), ssl(SslFilter.class), user(UserFilter.class); }
1. 身份验证相关:
*******************************身份验证******************************************************** 1.authc: -->org.apache.shiro.web.filter.authc.FormAuthenticationFilter 属于表单的过滤器,如"/**=authc",如果没有登录会跳到相应的登录页面登录: 主要属性: usernameParam:表单提交的用户名参数名(username) passwordParam:表单提交的密码参数名(password) rememberMeParam:表单提交的密码参数名(rememberMe) loginUrl:登录页面地址(/login.jsp) successUrl:登录成功后的默认重定向地址 failureKeyAttribute:登录失败后错误信息存储key(shiroLoginFailure) 2.authcBasic: -->org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter BaseHTTP身份验证过滤器,主要属性: applicationName:弹出框显示的信息(aoolication) 3.logout: -->org.apache.shiro.web.filter.authc.LogoutFilter 退出过滤器,主要属性: redirectUrl:退出成功后重定向的地址(/) 4.user: -->org.apache.shiro.web.filter.authc.UserFilter 用户过滤器,用户已经身份验证/记住我都可以,示例:"/**=user" 5.anon: -->org.apache.shiro.web.filter.authc.AnonymousFilter 匿名过滤器,即不需要登录也可以访问;一般用于静态资源过滤,示例:"/static/**=anon"
2.授权相关:
**********************************授权***************************************************** 1.roles: -->org.apache.shiro.web.filter.authz.RolesAuthorizationFilter 角色授权过滤器,验证用户是否拥有角色: 主要属性: loginUrl:登录页面地址(/login.jsp) unauthorizedUrl:未授权重定向地址;示例:"/admin/**=roles[admin]" 2.perms: -->org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter 授权过滤器,验证用户是否拥有权限,属性和Roles一样;示例:"/user/**=parms["user:create"]" 3.port: -->org.apache.shiro.web.filter.authz.PortFilter 端口过滤器,主要属性port(80),表示可以通过的端口;示例:"/test=port[80]",如果用户访问的页面是非80,会自动将端口改为80端口,其他路径参数都一样 4.rest: -->org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter reset风格过滤器,会自动根据请求方法构建权限字符串 5.ssl: -->org.apache.shiro.web.filter.authz.SslFilter SSL过滤器,只有请求协议是https才能通过;否则会自动跳转到https端口(443);其他和port过滤器一样
3. 其他:
***********************************Session**************************************************** 1.noSessionCreation: -->org.apache.shiro.web.filter.session.NoSessionCreationFilter 不创建会话过滤器,调用subject.getSession(false)不会由什么问题,但是如果subject.getSession(true)将抛出异常
二、自定义过滤器:
通过自定义过滤器可以扩展功能,
例如:动态url-叫哦/权限访问控制的实现,根据Subject身份信息获取用户信息绑定到Request(即设置通用数据)、验证码验证、在线用户信息保存等。