zoukankan      html  css  js  c++  java
  • 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(即设置通用数据)、验证码验证、在线用户信息保存等。

  • 相关阅读:
    JDK8的JVM内存模型小结
    揭开Service Mesh的神秘面纱
    通过Shell脚本读取properties文件中的参数时遇到 换行符的问题
    NodeJs+Express实现简单的Web增删改查
    SpringBoot之Thymeleaf模板引擎
    面向对象(下)
    内部类
    线程学习oneday
    Python-使用tkinter实现的Django服务进程管理工具
    Python-使用百度文字识别API实现的文字识别工具
  • 原文地址:https://www.cnblogs.com/luliang888/p/11171485.html
Copyright © 2011-2022 走看看