• shiro 与 web 的结合


    本次使用的jar包为

    shiro-core-1.2.4.jar
    shiro-web-1.2.4.jar

    从Shiro 1.2开始引入了Environment/WebEnvironment的概念,即由它们的实现提供相应的SecurityManager及其相应的依赖。ShiroFilter会自动找到Environment然后获取相应的依赖。

    <listener>  
       <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>  
    </listener>

    通过EnvironmentLoaderListener来创建相应的WebEnvironment,并自动绑定到ServletContext,默认使用IniWebEnvironment实现。

    可以通过如下配置修改默认实现及其加载的配置文件位置:

    <context-param>  
       <param-name>shiroEnvironmentClass</param-name>  
       <param-value>org.apache.shiro.web.env.IniWebEnvironment</param-value>  
    </context-param>  
        <context-param>  
            <param-name>shiroConfigLocations</param-name>  
            <param-value>classpath:shiro.ini</param-value>  
        </context-param>   

    shiroConfigLocations默认是“/WEB-INF/shiro.ini”,IniWebEnvironment默认是先从/WEB-INF/shiro.ini加载,如果没有就默认加载classpath:shiro.ini。

    Web INI配置

    [main]  
    #默认是/login.jsp  
    authc.loginUrl=/login  
    roles.unauthorizedUrl=/unauthorized  
    perms.unauthorizedUrl=/unauthorized  
    [users]  
    zhang=123,admin  
    wang=123  
    [roles]  
    admin=user:*,menu:*  
    [urls]  
    /login=anon  
    /unauthorized=anon  
    /static/**=anon  
    /authenticated=authc  
    /role=authc,roles[admin]  
    /permission=authc,perms["user:create"]  

    其中最重要的就是[urls]部分的配置,其格式是: “url=拦截器[参数],拦截器[参数]”;即如果当前请求的url匹配[urls]部分的某个url模式,将会执行其配置的拦截器。比如anon拦截器表示匿名访问(即不需要登录即可访问);authc拦截器表示需要身份认证通过后才能访问;roles[admin]拦截器表示需要有admin角色授权才能访问;而perms["user:create"]拦截器表示需要有“user:create”权限才能访问。

    url模式使用Ant风格模式

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

    ?:匹配一个字符,如”/admin?”将匹配/admin1,但不匹配/admin或/admin2;

    *:匹配零个或多个字符串,如/admin*将匹配/admin、/admin123,但不匹配/admin/1;

    **:匹配路径中的零个或多个路径,如/admin/**将匹配/admin/a或/admin/a/b。

    url模式匹配顺序

    url模式匹配顺序是按照在配置中的声明顺序匹配,即从头开始使用第一个匹配的url模式对应的拦截器链。如:

    /bb/**=filter1
    /bb/aa=filter2
    /**=filter3&nbsp;
    如果请求的url是“/bb/aa”,因为按照声明顺序进行匹配,那么将使用filter1进行拦截。
    /authenticated=authc
    /role=authc,roles[admin]
    /permission=authc,perms["user:create"]&nbsp;

    即访问这些地址时会首先判断用户有没有登录,如果没有登录默会跳转到登录页面,默认是/login.jsp,可以通过在[main]部分通过如下配置修改: 

    authc.loginUrl=/login
  • 相关阅读:
    SHELL脚本自动备份Linux系统
    Linux Shell脚本之自动修改IP
    oracle redo日志维护
    Linux运维工程师面试
    angular 的杂碎报错小知识
    angular.run 妙用
    vue的生命周期
    angular +H5 上传图片 与预览图片
    跨域问题解决方案之chrome插件
    js递归
  • 原文地址:https://www.cnblogs.com/panie2015/p/5528165.html
Copyright © 2020-2023  润新知