Shiro框架基础

Shiro 框架基础

简要概述一下shiro的主要组成,个人看来,Shiro 主要有四个组件:

  • SecurityManager 安全管理
  • Authenticator 身份认证
  • Authorization 权限鉴定
  • Session Manager 会话管理
    在官网的描述中,四个组件分别为:
  • Authentication - proving user identity, often called user ‘login’.
  • Authorization - access control
  • Cryptography - protecting or hiding data from prying eyes
  • Session Management - per-user time-sensitive state

    分别是身份验证,鉴权,加密以及会话管理。两者是一样的。
    用一张简图来描述一下Shiro的安全策略流程(简单的),不同应用程序环境下的Subject通过SecurityManager的安全策略管理,经过身份认证、权限、角色鉴定之后(这些几乎都包含在一个Realm中),以此访问数据库、可操作目录或者文件系统等等。
    Shiro框架简图-CM

当然,Shiro中还有会话管理、缓存管理以及加密等其他组件和功能,在简单的配置中就不做详细介绍。


-Shiro 的特点

Shiro相对于其他安全框架来说,更加的简单和灵活。有以下几个特点:

  • 使用更加简单
    按照官方的说法,ETU(easy to use)是项目的重要亮点之一。
  • 功能全面完善
    没有其他框架对于scope的深度管理,Shiro 几乎是“一站式”地解决你的安全需求。
  • 灵活
    可以应用于任何的应用程序环境中。
  • WEB开发支持更好
    允许你根据URL来构建更加灵活的web 安全管理策略,并且对各种协议有较好的支持,例如REST风格的支持
  • 插件化
    Shiro 的设计令它能够与更加容易的加入其他框架和应用程序中。
  • 更好的支持
    Shiro 框架是阿帕奇软件基金协会的一部分,有更好的团队以此为兴趣去开发和交流,并对此做出更新和支持。

- Shiro 的核心概念

在开始的时候我们提到,Shiro的组成有四个组件,而穿插在组件中用到的几个重要成分就是Shiro的核心概念,分别是:Subject, SecurityManager, and Realms。

- Subject

Subject:当前用户。
对于程序的设计,在安全感框架中,涉及到的两个核心问题就是:
   1.当前用户是谁?
   2.当前用户在安全管理之下允许做什么?
当我们设计用户接口的,构建应用程序的时候,通常都是基于用户行为的。所以的你程序接口或者说安全策略都是针对“单人单元”的。所以,在我们程序中最正常的安全策略往往都是针对当前用户来设计的。Subject就是当前用户。

- SecurityManager

针对于Subject的安全管理器,其负责所有用户的安全管理。在Shiro的体系结构中,相当于心脏的存在。通常的安全管理器,几乎要花费开发人员所有的时间来了解其架构与针对用户的API。
关于Shiro的安全管理器如何构建,针对不同的应用程序环境,配置不同,详情请参考另外一篇文章,给予springmvc的shiro简单配置:[ springmvc + shiro 配置(一、结构及配置文件)](http://blog.csdn.net/mremotion/article/details/49181747)

当然,在框架中,如何使用SecurityManager,最常用的两个例子如下:

EG:Login

//1. Acquire submitted principals and credentials:
AuthenticationToken token =
new UsernamePasswordToken(username, password);
//2. Get the current Subject:
Subject currentUser = SecurityUtils.getSubject();
//3. Login:
currentUser.login(token);
//4. Logout
currentUser.logout(); //removes all identifying information and invalidates their session too.

对于Login Failed的处理,直接用try{…}cath(…){…}即可。

EG:Authorization

//check subject s roles

if ( subject.hasRole(“administrator”) ) {
    //show the ‘Create User’ button
} else {
    //grey-out the button?
} 


//check subject s permission
if ( subject.isPermitted(“user:create”) ) {
    //show the ‘Create User’ button
} else {
    //grey-out the button?
} 

两个例子分别是对用户的角色以及权限进行鉴定。

当然,还有密码加密、会话管理等一系列功能,此处就不做介绍。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值