shiro 与 web 的结合

news/2024/7/23 11:22:21

本次使用的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

 

转载于:https://www.cnblogs.com/panie2015/p/5528165.html


http://www.niftyadmin.cn/n/1066736.html

相关文章

js实现页面打印

文章目录window.print()document.execCommand("print")iframe中打印JQuery插件HttpPrinter打印控件打印预览js有多种方式实现打印window.print() window.print();会弹出打印对话框&#xff0c;打印的是window.document.body.innerHTML中的内容,但是iframe中无法使用…

在Windows mobile中学习串口编程

点击此处下载源代码编制按&#xff1a;本文学习在Windows Mobile中学习串口编程的基本技术using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms; namespace cha…

poj模拟1013

模拟&#xff0c;定义两个数组&#xff0c;visited[]&#xff0c;用于记录改点时候为真和w[]&#xff0c;用于记录该店被怀疑的次数&#xff0c;或是出现在不相等中的次数&#xff1b;每当出现up或down时&#xff0c;对相比较的两个数组中的点对应的w[]相应的或是--&#xff1b…

Cordova开发速记

JS安全问题&#xff0c;已使用MERGES目录对不同的平台进行单独的控制&#xff0c;但需要在主页中引用平台重载文件&#xff0c;如<script src"script/platformOverrides.js"></script> 编译后的文件位于BLD目录下转载于:https://www.cnblogs.com/QinQouS…

将Excel中列数转为列号

一段将Excel中列数转为列号的VBA代码1Function NumToChar_26()Function NumToChar_26(Num As Double) As String 2 --Writen By FormatD 3 将Excel中列数转为列号 4 Dim iMod As Integer, dInt As Double, sChar As String 5 Application.Volatile 6 iMod Num …

MT4

http://baike.baidu.com/view/1154428.htm转载于:https://www.cnblogs.com/mingyongcheng/archive/2012/04/20/2460778.html

vue易漏问题

Ajax 使用 vue-resource 库。 <script src"https://cdn.bootcss.com/vue-resource/1.5.1/vue-resource.min.js"></script>get请求 var vm new Vue({el:#box,data:{msg:Hello World!,},methods:{get:function(){//发送get请求,参数必须要用params包一…

linux共享内存的几篇入门佳作

共享内存还是非常有用的的&#xff0c;不管是解决IPC问题&#xff0c;还是file缓冲问题&#xff0c;就有神效。以下这几篇神作&#xff0c;即使以前对共享内存没有一点认识和基础&#xff0c;读完后基本上也能轻松实现共享内存了。Linux环境进程间通信&#xff08;五&#xff0…