Shiro-过滤器

一、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(即设置通用数据)、验证码验证、在线用户信息保存等。

原文地址:https://www.cnblogs.com/luliang888/p/11171485.html