• shiro基础(一)shiroFilter


    一、功能简介

    shiro是java的一个安全(权限)框架,不仅可以用于javaSE环境,还可以用于javaEE环境。shiro可以完成认证、授权、加密、会话管理、缓存等功能。

    • Authentication:身份认证/登录。
    • Authorization:授权,即权限验证。
    • Session Manager:会话管理
    • Crpytography:加密
    • Web Support:Web集成
    • Remember Me:记住我

    二、shiro架构

    shiro框架(从外部看)

    • Subject:应用代码直接交互的对象,代表了当前“用户”,这个用户不一定指的是具体的人,与当前应用交互的任何东西都可以是Subject。而且与Subject的所有交互都会委托给SecurityManager,Subject其实就是一个门面,SecurityManager才是真正的执行者。
    • SecurityManager:安全管理器,也就是说所有和安全有关的操作都会与它交互。它也是shiro的核心,负责和其他shiro组件的交互。相当于springmvc的DispatcherServlet。
    • Realm:shiro从Realm获取安全数据比如角色,权限。如果SecurityManager要验证用户身份,那么就要从Realm获取相应的用户进行比较,确定用户身份是否合法。可以把Realm看成datasource。

    shiro框架(从内部看)

    • Subject:任何可以与应用交互的“用户“。
    • SecurityManager:相当于SpringMVC的DispatcherServlet,核心。
    • Authenticator:负责Subject的认证,可以自定义实现。包含多种认证策略。
    • Authorizer:授权器,也就是访问控制器。控制用户能访问应用中的哪些功能。
    • Realm:可以认为是安全实体数据源,获取安全实体,可以有一个或者多个。
    • SessionManager:管理Session生命周期组件。
    • CacheManager:缓存控制器。
    • Cryptography:密码模块,提供加密组件。

    三、集成

    与Spring集成

    1. 加入Spring好Shiro的jar包。
    2. 配置Spring和SpringMVC。
    3. 参照1.3.2shiro-root-1.3.2-source-releaseshiro-root-1.3.2samplesspring配置web.xml和Spring配置文件。

    与web集成

    1. shiro提供了与web集成的支持,其通过一个shiroFilter入口拦截需要控制的url,然后进行相应的权限控制。
    2. shiroFilter类似于springmvc中的前端控制器,是安全控制的入口点,负责读取配置文件,比如ini配置文件,然后判断url是否需要登录/权限等工作。

    四、shiroFilter

    下面看shiroFilter在web.xml中的配置:

    
        shiroFilter
        org.springframework.web.filter.DelegatingFilterProxy
        
            tartgetFilterLifecycle
            true
        
    
    
    
        shiroFilter
        *
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    DelegatingFilterProxy的作用就是自动到spring的容器中,查找名字为shiroFilter(filter-name)的bean,并将所有filter的操作委托给spring的容器中的bean。

    shiro默认的过滤器

    • anon:没有参数,表示可以匿名使用。例子:/admin/**=anon
    • authc:没有参数,表四需要认证(登录)才能使用。例子:/user/**=authc
    • roles:角色过滤器,判断当前用户是否拥有指定角色。例子:admins/**=roles[“admin,guest”]

    url匹配模式(使用Ant风格模式)

    Ant路径通配符支持、*、**,注意通配符匹配不包括目录分隔符"/"

    • :匹配一个字符,比如/admin将匹配/admin1,但是不匹配/admin或者/admin/
    • *:匹配0个或者多个字符串,比如/admin*将匹配/admin或者/admin123,但是不匹配/admin/1
    • **:匹配路径中的0个或者多个路径,比如/admin/**将匹配/admin/a或者/admin/a/s

    url匹配顺序

    url匹配顺序按照第一次匹配优先原则,即从头开始选择第一个能匹配上的拦截器链。

    比如:

    /admin/**=filter1

    /admin/user=filter2

    /**=filter3

    如果请求的是/admin/user,将使用filter1拦截。

  • 相关阅读:
    【sgGoogleTranslate】自定义组件:基于Vue.js用谷歌Google Translate翻译插件实现网站多国语言开发
    mybatis-plus批量更新太慢,如何解决?
    第16集丨阳明心学&量子力学
    数据类型和 Java 基础⾯试问题
    Facebook 惊现网络钓鱼浪潮,每周攻击 10 万个账户
    升级鸿蒙4.2新变化,新增 WLAN 网络自动连接开关!
    力扣1901.寻找峰值II
    elastic-job源码分析
    《SpringBoot篇》16.SpringBoot整合Elasticsearch超详细教程
    macOS Ventura 13.5.2(22G91)发布,附黑/白苹果镜像下载地址
  • 原文地址:https://blog.csdn.net/m0_67392273/article/details/126596244