文档章节

Apache-shiro学习

嗡嗡作响
 嗡嗡作响
发布于 2017/09/02 16:30
字数 710
阅读 18
收藏 0

1.Shiro简介

Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与Web 集成、缓存等

其中工作原理主要如图,进入后创建一个Subject(即为当前用户),然后SecurityManager管理所有Subject,这里可以理解为于SpringMVC的DispatcherServlet,最后我们Realm相当于是一个数据源,管理用户身份是否合法。

2.入门示例

@Test
public void testHelloworld() {
//1、获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManager
Factory<org.apache.shiro.mgt.SecurityManager> factory =
new IniSecurityManagerFactory("classpath:shiro.ini");
//2、得到SecurityManager实例并绑定给SecurityUtils
org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
//3、得到Subject及创建用户名/密码身份验证Token(即用户身份/凭证)
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken("zhang", "123");
try {
//4、登录,即身份验证
subject.login(token);
} catch (AuthenticationException e) {
//5、身份验证失败
}
Assert.assertEquals(true, subject.isAuthenticated()); //断言用户已经登录
//6、退出
subject.logout();
}

2.1、首先通过new IniSecurityManagerFactory 并指定一个ini 配置文件来创建一个SecurityManager工厂;

2.2、接着获取SecurityManager并绑定到SecurityUtils,这是一个全局设置,设置一次即可;
2.3、通过SecurityUtils得到Subject,其会自动绑定到当前线程;如果在web环境在请求结
束时需要解除绑定;然后获取身份验证的Token,如用户名/密码;
2.4、调用subject.login 方法进行登录,其会自动委托给SecurityManager.login方法进行登录;
2.5、如果身份验证失败请捕获AuthenticationException 或其子类;

2.6、最后可以调用subject.logout退出

3.与web集成

<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.2</version>
</dependency>

必要的架包。

web.xml如图所示

<filter>
		<filter-name>shiroFilter</filter-name>
		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>shiroFilter</filter-name>
		<url-pattern>*.shtml</url-pattern>
	</filter-mapping>

DelegatingFilterProxy作用是自动到spring容器查找名字为shiroFilter(filter-name)的bean并把所有Filter的操作委托给它,然后将ShiroFilter 配置到spring容器即可

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
		<property name="securityManager" ref="securityManager" />
</bean>

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”权限才能访问

 

暂时就看到这里,作一个记录,下次继续更新

 

© 著作权归作者所有

共有 人打赏支持
下一篇: java压缩图片
嗡嗡作响
粉丝 1
博文 29
码字总数 21637
作品 0
成都
程序员
私信 提问
Apache Shiro 使用手册

很好的学习资源,谢谢kdboy博主! Apache Shiro 使用手册(一)Shiro架构介绍 http://kdboy.iteye.com/blog/1154644 Apache Shiro 使用手册(二)Shiro架构介绍 http://kdboy.iteye.com/blo...

dmrs
2015/10/18
8
0
apache-shiro 学习笔记

(一) 看到SpringSide4居然也用shiro作为安全框架,不是用的spring-security。着实有点惊讶。 apache-shiro的强大可见一斑。 (二) apache-shiro依赖的包 除此之外还有一些东西也不可少spring,...

dmrs
2015/10/18
50
0
【Shiro】Shiro从小白到大神(一)-Shiro入门

本系列是我在学习Shiro的路上的笔记,第一篇是属于非常入门级别的。 首先是介绍了下shiro,然后进行了一个小例子进行实际的操作 本节操作不涉及数据库,只是文本字符操作认证 Shiro简介: 百度...

qq_26525215
2017/09/22
0
0
Shiro学习笔记入门--Hello Shiro

Apache Shiro是Apache的一个安全框架.对比Spring Security,可能没有Spring Security功能多,但是在实际并不需要那么重的东西.shiro简小精悍.大多项目绰绰有余.(JBOSS好像也有个什么安全框架....

浮躁的码农
2015/12/01
664
0
Spring Boot [集成-Shiro]

导读: 在阅读这篇文章之前假设你已经对Apache Shiro(后面统一用Shiro作为代指)有了一定的了解,如果你还对Shiro不熟悉的话在这篇文章的结尾附有相关的学习资料,关于Shiro是用来做什么的这里...

yangrd
2018/08/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

独家解密:阿里超大规模数据中心性能分析

郭健美,阿里巴巴高级技术专家,目前主要从事数据中心的性能分析和软硬件结合的性能优化。CCF 系统软件专委和软件工程专委的委员。曾主持国家自然科学基金面上项目、入选上海市浦江人才计划A...

阿里云云栖社区
15分钟前
0
0
独家解密:阿里大规模数据中心性能分析

郭健美,阿里巴巴高级技术专家,目前主要从事数据中心的性能分析和软硬件结合的性能优化。CCF 系统软件专委和软件工程专委的委员。曾主持国家自然科学基金面上项目、入选上海市浦江人才计划A...

zhaowei121
19分钟前
0
0
mongodb系列~配置文件的优化与处理

mongodb系列~配置文件的优化与处理 一 简介:讲讲如何优化mongo配置文件 二 常规参数 port= //端口 fork=true//守护进程方式启动mongo logpath=shard.log //mongo日志存放路径 journal= tru...

linjin200
21分钟前
0
0
同一台 windows10 设备,安装两个不同版本的mysql

两个mysql 的my.ini文件需要 配置不同的端口。 [mysqld]# 设置3307端口port=3307# 设置mysql的安装目录basedir=F:\\mysql-5.7.24-winx64 # 切记此处一定要用双斜杠\\,单斜杠我这里...

无敌小学僧
21分钟前
0
0
条码插件TBarCode Office系列教程一(Word Add-In篇)

TBarCode Office是一款适用于Microsoft Word 2007、2010和2013的条码插件,通过此插件可以轻松的在您的文档中嵌入代码。此系列教程旨在介绍TBarCode Office的常见问题及解答,帮助大家学习使...

ymy_666666
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部