权限项目总结(二)shiro入门

学习大部分知识的时候,都会有这样出现这样的几个问题。这是什么?如何使用?使用的意义所在?再泛化到主题shiro,有这样几个疑惑。什么是shiro?为什么要使用shiro?

shiro?

ApacheShiro一个功能强大,使用简单的Java安全框架,它为开发人员提供一个直观而全面的认证,授权,加密及会话管理的解决方案。

相比springsecurity,功能上shiro相对较少;使用上相对简单;适用面上,shiro覆盖了小到移动端的应用,大到企业级开发中的web应用及相关程序。而spring
security仅仅能为j2ee的开发提供服务。功能少所以使用上相对简单,适用面上更加宽泛。

shiro到底能做什么呢?,在shiro的官方首页中标明了如下几个模块。

Authentication(认证):用来验证用户到底是谁,为此用户需要提供某种某种获取系统识别和信任形式的身份证明这样的一个过程称之为认证。

Authorization(授权):也叫访问控制。确定应用程序是否有对资源的访问权限,换句话说就是谁有权访问。shiro尽可能的在这样一个过程中去减少复杂性,更加简洁的操作达到授权的目的。

Cryptograpthy(加密):即通过隐藏信息或将信息转换为不可读的状态。

shiro在加密主要侧重两种方式,1.公钥、私钥的方式2.消息摘要方式

SessionManagement(会话管理):先介绍什么是session?session就是用户登录到应用系统到loginout之前,这样一个时期称之为session。SessionManagement呢?就是shiro提供了很多丰富的功能来提供给开发者更好的存储、共享信息或异构客户端访问等。在shiro的官方介绍中,会话管理是适用于普遍开发环境的。

核心架构

图中描述了某个“用户”在访问系统之后,shiro处理这样的一个过程。

subject:当前访问应用系统的user,这里user泛指访问应用系统的的用户、程序等。

Security Manager:用来协调shiro内部组件针对user的服务,管理所有的组件。可以联想到pattern
model中的fa?ade pattern。

realm:通俗理解为数据源。即通过realm来获取当前session中的user在datasource中的权限信息。如:角色、权限资源等。

可以有多种实现方式,如jdbc方式。通常会根据开发环境的不同在自定义开发者所需的realm。

可以发现shiro并不会去管理权限,而是通过开发者提供的数据注入到shiro的realm中来提供权限服务。

如图所示

所以总结shiro一般处理流程一般情况分为以下步骤

1.应用“user”,即subject来访问应用系统,经过认证处理。通过即进入授权。

此时subject来调用securityManager。

2.security Manager调用内部realm得到权限数据

3.验证“user”和realm得到的数据,决定是否授权等操作。授权则user可以访问被shiro保护的资源。

参考资料:

http://jinnianshilongnian.iteye.com/blog/2018398

http://www.ibm.com/developerworks/cn/java/j-lo-shiro/

时间: 2024-10-12 20:10:49

权限项目总结(二)shiro入门的相关文章

JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权

shiro介绍 什么是shiro shiro是Apache的一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架.它可以实现如下的功能: 1.验证用户 2.对用户执行访问控制,如:判断用户是否具有角色admin,判断用户是否拥有访问的资源权限. 3.在任何环境下使用SessionAPI.例如C/S程序 4.可以使用多个用户数据源.例如一个是Oracle数据库,另外一个是MySQL数据库. 5.单点登录(SSO)功能

shiro权限项目中的简单应用

SpringMVC+maven 项目需要使用shiro,所以自学了几天,仅提供给新手,请根据文档查看-该项目仅是测试项目,并不完善,只实现了需要使用的基本功能,并且只提供了使用shiro模块的代码.楼主新人第一次写,如有问题希望能提出来,由衷的感谢. 首先是pom.xml: <dependency>     <groupId>org.apache.shiro</groupId>     <artifactId>shiro-core</artifactI

在前后端分离的SpringBoot项目中集成Shiro权限框架

项目背景 公司在几年前就采用了前后端分离的开发模式,前端所有请求都使用ajax.这样的项目结构在与CAS单点登录等权限管理框架集成时遇到了很多问题,使得权限部分的代码冗长丑陋,CAS的各种重定向也使得用户体验很差,在前端使用vue-router管理页面跳转时,问题更加尖锐.于是我就在寻找一个解决方案,这个方案应该对代码的侵入较少,开发速度快,实现优雅.最近无意中看到springboot与shiro框架集成的文章,在了解了springboot以及shiro的发展状况,并学习了使用方法后,开始在网上

【转】Apache shiro集群实现 (一) shiro入门介绍

近期在ITOO项目中研究使用Apache shiro集群中要解决的两个问题,一个是Session的共享问题,一个是授权信息的cache共享问题,官网上给的例子是Ehcache的实现,在配置说明上不算很详细,我在我们的项目中使用的是nosql(Redis)替代了ehcache做了session和cache的存储,接下来从shiro.Cas.redis.session等等基础知识.基本原理集成的角度来不断的深入分析,系列文章篇幅很长,很丰富,尽请期待! Apache shiro集群实现 (一) sh

将 Shiro 作为应用的权限基础 一:shiro的整体架构

将 Shiro 作为应用的权限基础 一:shiro的整体架构 近来在做一个重量级的项目,其中权限.日志.报表.工作量由我负责,工作量还是蛮大的,不过想那么多干嘛,做就是了. 这段时间,接触的东西挺多,比如apacheshiro,spring data,springside.DWZ等,java的东西好多,学过ssh就像当初学过三层一样. 下面看看这个安全框架吧 一.什么是Shiro Shiro是一个强大而灵活的开源安全框架,能够非常清晰的处理认证.授权.管理会话以及密码加密.如下是它所具有的特点:

我的shiro之旅: 十二 shiro 踢出用户(同一用户只能一处登录)

我的shiro之旅: 十二 shiro 踢出用户(同一用户只能一处登录) 2014年09月05日 ⁄ 综合 ⁄ 共 4677字 ⁄ 字号 小 中 大 ⁄ 评论关闭 看了一下官网,没有找到关于如何控制同一用户只能一处登录的介绍,网上也没有找到相关的文章.可能有些人会记录用户的登录信息,然后达到踢出用户的效果.这里介绍一个更简单的方法. 如果我们跟shiro的源码,我们可以看到.当用户登录成功 后,shiro会把用户名放到session的attribute中,key为 DefaultSubjectC

shiro入门应用示例(采用spring+springmvc+mybatis+shiro)

原文:shiro入门应用示例(采用spring+springmvc+mybatis+shiro) 源代码下载地址:http://www.zuidaima.com/share/1550463711726592.htm shiro入门应用示例供参考(采用spring+springmvc+mybatis+shiro) 项目完整源码 链接: http://pan.baidu.com/s/1uyc7I 密码:qk0j

Shiro 入门demo

1.新建maven项目,引入shiro的核心依赖 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.5.1</version> </dependency> 2.在resource下新建shiro.ini #定义用户 [users] #用户名=密码,角色.一个用户可以对应多

Shiro 入门

Apache Shiro(http://shiro.apache.org/) 是 Java 的一个安全(权限)框架. Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境. Shiro 可以完成:认证.授权.加密.会话管理.与Web 集成.缓存等. 主要类介绍 Authentication:身份认证/登录,验证用户是不是拥有相应的身份:1. Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限:即判断用户是

利用Eclipse中的Maven构建Web项目(二)

利用Eclipse中的Maven构建Web项目 1.新建源文件夹,Java Resources鼠标右键,"New-->Source Folder" 2.新建src/main/java   src/main/resources  src/test/java  src/test/resources四个源包 3.双击每个文件夹的Output folder,选择路径 src/main/java和src/main/resources,选择路径target/classes; src/test