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

  • 相关阅读:
    mysql常用sql语句的练习笔记
    docker-compose使用--config启动mongodb出错的采坑记录
    ubuntu1804安装docker和docker-compose的最新2020详细教程
    ubuntu1804使用国内git源安装fastdfs的笔记
    2020最新nginx+gunicorn+supervisor部署基于flask开发的项目的生产环境的详细攻略
    2020年ubuntu1804安装php7.3最新详细教程
    2020年ubuntu1804安装nginx最新稳定版1.16详细教程笔记
    ubuntu1804python安装mysqlclient的模块报错的解决办法
    ubuntu1804开启mysql远程访问功能和设置root远程访问
    ubuntu1804使用python3 venv 创建虚拟目录和制定Pip国内安装源
  • 原文地址:https://www.cnblogs.com/luliang888/p/11171485.html
Copyright © 2011-2022 走看看