
Shiro权限管理
光仔December
技术宅,系统集成项目管理工程师,FCP-报表开发工程师,全国软件开发(C/C++)专业人才高级认证,2014年ACM-ICPC河南省赛区银奖,2014年第五届蓝桥杯河南赛区C/C++程序设计本科B组二等奖,2015年甲骨文杯全国Java程序设计大赛华中赛区A组二等奖,2015年中国大学生计算机设计大赛团队三等奖
展开
-
【Shiro权限管理】5. Shiro权限URL 配置细节
上一次总结中重点讲解了Shiro的配置,其中一个过滤请求并管理权限的重要配置为shiroFilter,样例配置如下所示:<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="se...原创 2017-10-30 20:32:16 · 5764 阅读 · 2 评论 -
【Shiro权限管理】17.Shiro权限注解
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。前面我们讲解了Shiro的标签属性,下面我们来讲解Shiro的有关权限的注解属性。Shiro的注解是使用在相应的Java类的方法上,当用户不满足注解的要求时,是无法执行方法内部逻辑的。这相当于在代码层做了权限校验。Shiro的注解可以放置在Controller层对应的方法上,也可以放置在Service层对应的方法原创 2017-12-10 16:09:48 · 9663 阅读 · 1 评论 -
【Shiro权限管理】14.Shiro授权
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。我们之前讲解了Realm认证和认证器策略等知识,下面来讲解Shiro中比较重要的知识:授权。对于授权,也叫访问控制,即在应用中控制谁访问哪些资源(如访问页面/编辑数据/页面操作等)。一、授权的几个重要概念在授权中需要了解几个关键对象:主体(Subject)、资源(Resource)、权限(Permission)、原创 2017-12-02 14:05:32 · 1664 阅读 · 3 评论 -
【Shiro权限管理】15.Shiro授权流程分析
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。上一篇讲解了Shiro授权的相关基础知识,并实验了“roles”拦截器的效果。可惜的是没有给用户进行授权工作,所以没有验证拥有角色后的权限校验工作。下面就来讲解一下Shiro的授权流程。之前我们使用过认证的Realm,他是进行登录认证时提供认证数据的关键类,其继承了AuthenticatingRealm父类,并实原创 2017-12-03 12:08:21 · 3792 阅读 · 0 评论 -
【Shiro权限管理】12.Shiro认证策略
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。上一篇我们讲到了Shiro的多Realm验证,并且编写实例进行了测试。对于多Realm校验,我们还需要知道,两个Realm时,怎么才能知道认证通过了?是一个Realm通过了就通过,还是全部Realm通过了才通过,还是其它?这就牵扯到了认证策略。认证策略实际上是AuthenticationStrategy这个接口,它有三个原创 2017-11-26 13:38:39 · 2779 阅读 · 0 评论 -
【Shiro权限管理】13. SecurityManager配置realms
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。大家可以注意到,在没有使用认证器之前,我们是这样配置Realm的: 后来使用了多Realm验证时,会将多个Realm配置到认证器中,再将认证器配置给securityManager:原创 2017-11-26 13:41:39 · 9398 阅读 · 0 评论 -
【Shiro权限管理】18.Shiro从数据表中初始化资源和权限
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。前面我们讲解了Shiro的标签以及权限注解,下面我们来讲解一下Shiro如何从数据表中初始化资源和权限。之前在测试的Web工程下,我们在applicationContext.xml中配置了shiroFilter资源拦截器信息:<bean id="shiroFilter" class="org.apache.shiro...原创 2017-12-17 14:23:00 · 5752 阅读 · 4 评论 -
【Shiro权限管理】19.Shiro会话管理
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。下面我们来说一下Shiro里面的会话管理,这个“会话”与JavaWeb里面的HttpSession是一致的,都是表示客户端与服务器的一次会话。Shiro会话的特点:Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(比如Web容器tomcat),不管JavaSE还是JavaEE环境都可以使用。原创 2017-12-17 14:27:55 · 2515 阅读 · 0 评论 -
【Shiro权限管理】20.Session持久化(SessionDAO)
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。上一篇说到了Shiro是如何控制Session会话的,而对于分布式系统,一般都牵扯到Session共享问题,而想实现Session共享,就要实现Session的持久化操作,即是将内存中的Session持久化至缓存数据库。本篇就讲解一下使用Shiro实现Session会话的持久化操作,即SessionDAO的相关知识。原创 2018-01-02 21:01:09 · 14528 阅读 · 6 评论 -
【Shiro权限管理】21.Shiro缓存
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。在使用Shiro框架进行授权或者权限管理时,可以利用Shiro框架的缓存特性来提高系统的性能。那么如何来实现Shiro的缓存效果呢?Shiro中提供了一个CacheManagerAware接口,实现此接口的类都可以进行缓存的一些基础操作。同理也即是说Realm实现了CacheManagerAware接口就可以操作原创 2018-01-06 15:24:18 · 2363 阅读 · 2 评论 -
【Shiro权限管理】16.Shiro标签
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。前面我们剖析了Shiro的授权流程,并且编写了授权的小实例。下面我们来探讨一下Shiro的标签。Shiro提供了JSTL标签用于在JSP页面进行权限控制,如根据登录用户显示相应的页面按钮。Shiro提供的标签有如下几种:(1)guest标签:用户没有身份验证时显示相应信息,即游客访问信息。例如:原创 2017-12-10 16:05:35 · 3543 阅读 · 2 评论 -
【Shiro权限管理】11.Shiro多 Realm 验证
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。上一篇讲解了Shiro的密码MD5加盐校验,下面来讲解Shiro的多Realm验证。在我们之前的样例中,一直使用的是ShiroRealm来获取数据源中的账号密码封装信息的,而该Realm配置在securityManager中 而在实际的业务场景中,会遇到安全数据存储在不同的数据库中的情况(例如原创 2017-11-20 19:33:05 · 1940 阅读 · 0 评论 -
【Shiro权限管理】6.Shiro认证思路分析
下面来说一下Shiro的认证。如何来做Shiro的认证呢?首先回顾一下之前剖析的Shiro的HelloWorld程序中有关认证的部分代码://获取当前的SubjectSubject currentUser = SecurityUtils.getSubject();//测试当前用户是否已经被认证(即是否已经登录)if (!currentUser.isAuthenticated()) {原创 2017-10-30 20:34:21 · 2382 阅读 · 0 评论 -
【Shiro权限管理】7.实现Shiro认证流程
上一篇我们剖析了Shiro的整个认证思路,这次来动手实现一个简单的Web登录认证程序。首先在MyEclipse中创建一个Web Project:然后在lib中加入Shiro/Spring/SpringMVC以及ehcache和日志相关jar:然后在src下创建Spring配置文件applicationContext.xml以及缓存ehcach原创 2017-10-30 20:39:28 · 1947 阅读 · 2 评论 -
【Shiro权限管理】4. Shiro工作流程
在上一篇总结中我们已经将Spring与Shiro的集成框架搭建起来了,下面就来简单看一下Shiro的整个工作流程。之前由于配置在shiroFilter的filterChainDefinitions中配置了一些访问权限:<!-- 配置哪些页面需要受保护. 以及访问这些页面需要的权限. 1). anon 可以被匿名访问 2). authc 必须认证(即登录)后才可能访问原创 2017-10-22 18:59:28 · 2369 阅读 · 0 评论 -
【Shiro权限管理】3.Shiro集成 Spring
下面来说一下如何在Web下使用Shiro。在大部分Web开发环境下,都是使用Spring与Shiro进行集成,所以下面直接来讲解Shiro与Spring集成的方式。一、准备环境(1)加入Spring和Shiro的jar包首先在MyEclipse中新建一个Web工程:然后在lib下加入Spring的相关jar包:然后加入Shiro的相关jar包: (2)配置...原创 2017-10-22 18:50:00 · 1992 阅读 · 10 评论 -
【Shiro权限管理】1.Shiro简介
一、简介在Web系统中我们经常要涉及到权限问题,例如不同角色的人登录系统,他操作的功能、按钮、菜单是各不相同的,这就是所谓的权限。Apache Shiro是Java的一个安全(权限)框架,Shiro可以完成认证、授权、加密、会话管理、Web集成、缓存等功能。适用于JavaSE和JavaEE。关于安全框架,还有一个Spring Security框架,不过目前使用率比较高的还是Apac原创 2017-10-14 12:59:01 · 2182 阅读 · 0 评论 -
【Shiro权限管理】2.Shiro的HelloWorld程序
下面来分析一个Shiro的HelloWorld程序。这段程序不是我们自己写的,而是Shiro给我们提供的一个样例代码。通过这段代码我们可以看到Shiro的大致结构。首先通过http://shiro.apache.org/download.html下载Shiro的jar包:目前Shiro的最新版本为1.3.2版本,其中包括shiro-all、shiro-core、shiro-web、原创 2017-10-14 13:23:12 · 1951 阅读 · 0 评论 -
【Shiro权限管理】8.Shiro密码的比对
上一次总结了如何实现一个简单的Shiro认证流程。首先通过前端页面的form表单提交,在Controller请求处理层获取了form表单中的账号密码,然后获取当前用户的Subject对象,执行了Subject的login方法进行登录操作,并将账号密码封装进Token对象,作为参数传入。而后面设置了认证需要的Realm类,该Realm类继承了AuthenticatingRealm父类,实原创 2017-11-04 21:06:18 · 9803 阅读 · 5 评论 -
【Shiro权限管理】10.Shiro为密码加盐
上一篇我们提到了使用Shiro为密码进行MD5加密,这次来说一下密码加盐的问题。当两个用户的密码相同时,单纯使用不加盐的MD5加密方式,会发现数据库中存在相同结构的密码,这样也是不安全的。我们希望即便是两个人的原始密码一样,加密后的结果也不一样。如何做到呢?其实就好像炒菜一样,两道一样的鱼香肉丝,加的盐不一样,炒出来的味道就不一样。MD5加密也是一样,需要进行盐值加密。在之原创 2017-11-20 19:28:07 · 35619 阅读 · 21 评论 -
【Shiro权限管理】22.Shiro之记住我
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。在我们登录一些网站的时候,在登录输入框的下侧一般都会有一个“记住我”的勾选框,选择之后,我们下次进入网站的时候就会自动进行登录操作,无需我们再次输入密码。而在访问一些敏感信息的时候,还是需要进行登录操作的。有关“记住我”的实现原理如下:1、首先在登录页面选中“记住我”然后登录成功;如果是浏览器登录,一般会把“原创 2018-01-06 15:31:38 · 7034 阅读 · 0 评论