ShiroFilter工作原理

ShiroFilter工作原理:

* Shiro提供了与Web集成,其通过ShiroFilter入口来拦截需要安全控制的url,然后进行相应的权限控制。
* ShiroFilter类似于Struts2/SpringMVC这种Web前端框架的前端控制器,是安全控制的入口点,其负责是读取配置(如ini文件),然后判断权限是否需要登录/权限等工。

1).因为我们在applicationContext.xml中配置了ShiroFilter,所以访问页面时需要遵循ShiroFilter中filterChainDefinitions的配置

    1.1:filterChainDefinitions 详解: 配置哪些页面需要受保护.以及访问这些页面需要的权限. 
        1). anon 可以被匿名访问
        2). authc 必须认证(即登录)后才可能访问的页面. 
        3). logout 登出.
        4). roles 角色过滤器

    1.2:前端发起的所有请求都会被ShiroFilter拦截到,访问时,如果有权限或者允许匿名访问,则可以直接访问,否则将会被重定向到 loginUrl     (即访问到受保护的url并且没有权限)

2).Shiro配置受保护的url
    
    2.1 : [urls]部分的配置,其格式是:"url=拦截器[参数],拦截器[参数]"
    2.2 : 如果当前请求的url匹配[urls] 部分的某个url模式,将会执行其匹配的拦截器
    2.3 : anon (anonymous) 拦截器表示可以匿名访问(即不需要登录就可以访问)
    2.4 : authc (authentication) 拦截器表示表示身份需要认证通过后才能访问
    2.5 : url匹配模式(url模式使用Ant风格),Ant路劲通配符支持?,*,** ,注意通配符匹配不包括目录分割符"/"
        1).-?:匹配一个字符,如/admin? 将匹配admin1 ,但不匹配 /admin 或 /admin/
        2).-*:匹配零个或多个字符串,如/admin* 将匹配 /admin123 , /admin ,但不匹配/admin/1
        3).-**:匹配路劲中有零个或多个路劲,如/admin/** 将匹配 /admin/123 , /admin/123/1
    2.6 : url匹配顺序(url权限采取第一次匹配优先的方式,即从头开始使用第一个匹配的url模式对应的拦截器链)
        -/bb/** = filter1
        -/bb/aa = filter2
        -/** = filter3

        如果请求的url是"/bb/aa",那么将使用filter1进行拦截



你可能感兴趣的:(shiro)