Shiro权限框架简介

http://blog.csdn.net/xiaoxian8023/article/details/17892041

Shiro权限框架简介

2014-01-05 23:51 3111人阅读 评论(37) 收藏 举报

 分类:

【java框架】(25) 

版权声明:本文为博主原创文章,未经博主允许不得转载。如需转载请声明:【转自 http://blog.csdn.net/xiaoxian8023 】

目录(?)[+]

最近加入了gxpt项目组,被安排做权限模块,所以也有幸第一次接触到了Shiro框架。让我们来一起领略Shiro的风采吧。

什么是Apache Shiro?

Apache Shiro(发音为“shee-roh”,日语“堡垒(Castle)”的意思)是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。

你可以用 Apache Shiro做下面的事情:

  • 验证用户
  • 对用户执行访问控制,如: 
    • 判断用户是否拥有角色admin
    • 判断用户是否拥有访问的权限
  • 在任何环境下使用 Session API
  • 可以使用多个用户数据源。例如一个是oracle用户库,另外一个是mysql用户库
  • 单点登录(SSO)功能
  • “Remember Me”服务 ,类似购物车的功能,shiro官方建议开启

Shiro要想做成以上的事情,主要依赖于4大API:

  • Authentication —— 认证,用户身份识别,常被称为用户“登录”,who are you?
  • Authorization —— 授权,访问控制过程,决定“谁”访问“什么”,who can do what?
  • Session Management —— 会话管理,用户session管理器,用户相关的时间敏感的状态
  • Cryptography —— 密码加密,把JDK中复杂的密码加密方式进行封装,保护或隐藏数据防止被偷窥

Shiro还支持一些辅助特性,如Web应用安全、缓存、单元测试和多线程,它们的存在强化了上面提到的四个要素。

为什么要用Shiro?

虽然目前有其他安全框架,比如 JAAS,Spring Security,但是仍有令人信服的理由让你选择Shiro:

  • 易于使用 —— 可以让新手都能很快上手,应用安全的开发与管理将不再是一种痛苦
  • 灵活性 —— 可以工作在任何应用环境中。虽然它工作在Web、EJB和IoC环境中,但并不依赖这些环境。既不强加任何规范,也无需过多依赖。
  • Web能力 —— 对Web应用的支持很神奇,允许你基于应用URL和Web协议(如REST)创建灵活的安全策略,同时还提供了一套控制页面输出的JSP标签库。
  • 热插拔 —— Shiro干净的API和设计模式使它可以方便地与许多的其他框架和应用进行无缝集成。

Shiro大体框架

要想快速了解Shiro,必须先从整体上去了解它,先说说它的高度概括框架:

Shiro包含三个核心组件:Subject,SecurityManager 和 Realms。具体来说:

Subject 是与程序进行交互的对象,可以是人也可以是服务或者其他,通常就理解为用户。

所有Subject 实例都必须绑定到一个SecurityManager上。我们与一个 Subject 交互,运行时shiro会自动转化为与 SecurityManager交互的特定 subject的交互。

SecurityManager 是 Shiro的核心,初始化时协调各个模块运行。

当SecurityManager协调完毕,SecurityManager 会被单独留下,且我们只需要去操作Subject即可,无需操作SecurityManager 。 但是我们得知道,当我们正与一个 Subject 进行交互时,实质上是 SecurityManager在处理 Subject 安全操作。

Realms在 Shiro中作为应用程序和安全数据之间的“桥梁”或“连接器”。

它获取安全数据来判断subject是否能够登录,subject拥有什么权限。有点类似DAO。在配置realms时,需要至少一个realm。而且Shiro提供了一些常用的 Realms来连接数据源,如LDAP数据源的JndiLdapRealm,JDBC数据源的JdbcRealm,ini文件数据源的IniRealm,properties文件数据源的PropertiesRealm等等。我们也可以插入自己的 Realm实现来代表自定义的数据源。 像其他组件一样,Realms也是由SecurityManager控制

Shiro整体框架

简单了解了一下大体的框架,现在让我们一起来目睹Shiro的“芳容”吧:

  • Subject (org.apache.shiro.subject.Subject):
    简称用户,解释同上。
  • SecurityManager (org.apache.shiro.mgt.SecurityManager)
    如上所述,SecurityManager是shiro的核心,协调shiro的各个组件。
    • Authenticator (org.apache.shiro.authc.Authenticator):
      用户身份验证组件,登录控制。
  • Authentication Strategy (org.apache.shiro.authc.pam.AuthenticationStrategy)
    如果存在多个realm,则接口AuthenticationStrategy会确定什么样算是登录成功(例如,如果一个Realm成功,而其他的均失败,是否登录成功?)。
  • Authorizer (org.apache.shiro.authz.Authorizer) :
    访问控制组件,决定subject能拥有什么样角色或者权限。
  • SessionManager (org.apache.shiro.session.SessionManager) :
    创建和管理用户session。通过设置这个管理器,shiro可以在任何环境下使用session。
    • SessionDao (org.apache.shiro.mgt.eis.SessionDao):
      代表SessionManager执行Session持久化(CURD)操作。
  • CacheManager (org.apahce.shiro.cache.CacheManager) :
    缓存管理器,可以减少不必要的后台访问。提高应用效率,增加用户体验。
  • Cryptography(org.apache.shiro.crypto.*) :
    Shiro的api大幅度简化java api中繁琐的密码加密。
  • Realms(org.apache.shiro.realm.Realm) :
    程序与安全数据的桥梁

来自为知笔记(Wiz)

时间: 2024-10-25 08:39:54

Shiro权限框架简介的相关文章

(转) shiro权限框架详解06-shiro与web项目整合(上)

http://blog.csdn.net/facekbook/article/details/54947730 shiro和web项目整合,实现类似真实项目的应用 本文中使用的项目架构是springMVC+mybatis,所以我们是基于搭建好的项目进行改造的. 将shiro整合到web应用中 登录 退出 认证信息在页面展现,也就是显示菜单 shiro的过滤器 将shiro整合到web应用中 数据库脚步 sql脚步放到项目中,项目上传到共享的资源中,文章最后给出共享url. 去除项目中不使用shi

shiro权限框架与spring框架轻松整合

2017年06月26日 17:53:30 阅读数:419 shiro是一个权限框架,用于管理网站的权限,大到网站登录过滤,小到一个菜单或按钮是否显示,shiro学习起来非常简单,以下是shiro的执行流程图: 看完不懂的请下载shiro全套视频教程: http://pan.baidu.com/s/1jHOX2MM Subject为当前用户,当它访问系统的时候,就会经过SecurityManager安全管理器,安全管理器类似一个中转站,它实际上会让Realm类来处理用户的认证和授权信息,认证和授权

Shiro 权限框架使用总结

我们首先了解下什么是shiro ,Shiro 是 JAVA 世界中新近出现的权限框架,较之 JAAS 和 Spring Security,Shiro 在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势 Shiro 是一个强大而灵活的开源安全框架,能够非常清晰的处理认证.授权.管理会话以及密码加密.如下是它所具有的特点: 易于理解的 Java Security API: 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等): 对角

关于Apache Shiro权限框架的一些使用误区的解释

多了不说了,进入正题,shiro是个权限框架提供权限管理等功能,网上的教程一般都是互相抄,比如<shiro:principal property="xxx"/>这个标签,网上教程告诉你可以用来获取登录用户的任何属性,但现实中如果你这么写,并且按照开涛教程上写的登陆逻辑,肯定百分百报错,这是为什么呢?因为网上教程的登录部分一般这么写: 这是重写authorizingrealm的dogetAuthenticationinfo方法: protected Authenticatio

shiro权限框架

权限的组成部分:用户 资源 角色 权限 数据库关系表设计是根据自己项目需求设计的 account表role表(id,rolename)account_role(id,aid,rid)permission(id,pername)role_permission(id,rid,pid) 没有设置用户和权限的关系,我们可以认为用户的权限是通过角色来决定的 1.导入jar包 shiro-all-1.2.1.jar 2.配置web.xml <!-- 权限过滤器--> <filter> <

shiro权限框架实战

shiro框架作为一种开源的权限框架,通过将身份认证和授权从具体的业务逻辑中分离出来极大地提高了我们的开发速度,它的易用性使得它越来越受到人们的青睐.与之前的ACL权限框架相比,shiro能更容易的实现权限控制,而且作为基于RBAC的权限管理框架通过与shiro标签结合使用,能够让开发人员在更加细粒度的层面上进行控制.举个例子来讲,之前我们使用基于ACL的权限控制大多是控制到连接(这里的连接大家可以简单的认为是页面,下同)层面,也就是通过给用户授权让这个用户对某些连接拥有权限,这种情况显然不太适

SpringMVC整合Shiro权限框架

尊重原创:http://blog.csdn.net/donggua3694857/article/details/52157313 最近在学习Shiro,首先非常感谢开涛大神的<跟我学Shiro>系列,在我学习的过程中发挥了很大的指导作用.学习一个新的东西首先就是做一个demo,多看不如多敲,只有在实践中才能发现自己的欠缺,下面记录下来我整合shiro的过程.如果有不足之处,还望各位看官多多指出. 一.基本名词解释 Apache Shiro是一个强大易用的Java安全框架.它可以帮助我们完成:

(转)shiro权限框架详解02-权限理论介绍

http://blog.csdn.net/facekbook/article/details/54893042 权限管理解决方案 本文主要介绍权限管理的解决方法: 粗颗粒度和细颗粒度 基于url拦截 使用权限管理框架 粗颗粒度和细颗粒度 什么是粗颗粒度和细颗粒度 在上一文中提到粗颗粒度和细颗粒度,但是没有细讲. 对资源类型的管理称为粗颗粒度权限管理,既只控制到菜单.按钮.方法,粗颗粒度的例子比如:用户具有用户管理的权限,具有导出订单的权限.对资源实例的控制称为细颗粒度权限管理,既控制到数据级别,

Shiro安全框架简介以及身份验证

一.Shiro简介 官网  http://shiro.apache.org/download.html Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码学和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序. 三个核心组件:Subject, SecurityManager 和 Realms. Subject:即"当前操作用户".但是,在Shiro中,Subject这一概念并不