文档章节

Shiro权限入门介绍

boonya
 boonya
发布于 2014/11/20 13:24
字数 1368
阅读 203
收藏 1
点赞 0
评论 0

nShiro是什么

  Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能 

nShiro能做什么

  认证:验证用户来核实他们的身份

  授权:对用户执行访问控制,如:

  判断用户是否被分配了一个确定的安全角色

  判断用户是否被允许做某事

  会话管理:在任何环境下使用Session API,即使没有Web 或EJB 容器。

  加密:以更简洁易用的方式使用加密的功能,保护或隐藏数据防止被偷窥

  Realms:聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”。

  启用单点登录(SSO)功能。

  为没有关联到登录的用户启用"Remember Me"服务

Shiro的四大部分——身份验证,授权,会话管理和加密

· Authentication:有时也简称为“登录”,这是证明用户是他们所说的他们是谁的行为。

· Authorization:访问控制的过程,也就是绝对“谁”去访问“什么”。

· Session Management:管理用户特定的会话,即使在非Web 或EJB 应用程序。

· Cryptography:通过使用加密算法保持数据安全同时易于使用

 

n除了以上功能,shiro还提供很多扩展

  Web Support:主要针对web应用提供一些常用功能。

  Caching:缓存可以使应用程序运行更有效率。

  Concurrency:多线程相关功能。

  Testing:帮助我们进行测试相关功能

  "Run As":一个允许用户假设为另一个用户身份(如果允许)的功能,有时候在管理脚本很有用。

  “Remember Me”:记住用户身份,提供类似购物车功能。

nSubject

  Subject 实质上是一个当前执行用户的特定的安全“视图”。Subject 可以是一个人,也可以代表第三方服务,或其他类似的任何东西——基本上是当前正与软件进行交互的任何东西。

  所有Subject 实例都被绑定到(且这是必须的)一个SecurityManager 上。当你与一个Subject 交互时,那些交互作用转化为与SecurityManager 交互的特定subject 的交互作用。

 

nSecurityManager

  SecurityManager 是Shiro 架构的心脏,用来协调内部的安全组件共同构成一个对象图,管理内部组件实例,并通过它来提供安全管理的各种服务。

  实际开发中,程序人员主要与Subject交互,但是要认识到,当你正与一个Subject 进行交互时,实质上是幕后的SecurityManager 处理所有繁重的Subject 安全操作。

nRealms

  Realms 担当Shiro 和你的应用程序的安全数据之间的“桥梁”或“连接器”。当它实际上与安全相关的数据如用来执行身份验证(登录)及授权(访问控制)的用户帐户交互时,Shiro 从一个或多个为应用程序配置的Realm 中寻找许多这样的东西。

  Realm 本质上是一个特定安全的DAO:它封装了数据源的连接详细信息,使Shiro 所需的相关的数据可用。当配置Shiro 时,你必须指定至少一个Realm 用来进行身份验证和/或授权。SecurityManager可能配置多个Realms,但至少有一个是必须的。

  Shiro 提供了立即可用的Realms 来连接一些安全数据源(即目录),如LDAP,关系数据库(JDBC),文本配置源,像INI 及属性文件,以及更多。你可以插入你自己的Realm 实现来代表自定义的数据源,如果默认地Realm 不符合你的需求。

 

nAuthenticator :是一个执行对用户的身份验证(登录)的组件。Authenticator 知道如何与一个或多个Realm 协调来存储相关的用户/帐户信息。从这些 Realm 中获得的数据被用来验证用户的身份来保证用户确实是他们所说的他们是谁。

n如果存在多个realm,则接口AuthenticationStrategy会确定什么样算是登录成功(例如,如果一个Realm成功,而其他的均失败,是否登录成功?)。

nAuthorizer :授权实质上就是访问控制 - 控制用户能够访问应用中的哪些内容,比如资源、Web页面等等。

nSessionManager :提供可在任何应用或架构层一致地使用Session API。

nSessionDAO:代表SessionManager 执行Session 持久化(CRUD)操作。

nCacheManager :对Shiro的其他组件提供缓存支持。

nCryptography:Shiro的api大幅度简化java api中繁琐的密码加密

nRealms:Realms 在Shiro 和你的应用程序的安全数据之间担当“桥梁”或“连接器”。简单的说,shiro通过Realms来获取相应的安全数据

Shiro 的 HelloWorld

n构建开发和运行环境:

1:在eclipse里面创建一个基本的java工程

2:加入所需要的jar包

n在src下创建TestShiro.ini文件,内容如下:

[users]
javass = cc,role1
 
[roles]
role1 = p1,p2

3:创建cn.javass.hello包,并创建HelloWorld类

public class HelloWorld {
  public static void main(String[] args) {
  Factory<org.apache.shiro.mgt.SecurityManager> f = new IniSecurityManagerFactory("classpath:TestShiro.ini");
  org.apache.shiro.mgt.SecurityManager s = f.getInstance();
  SecurityUtils.setSecurityManager(s);
 
  UsernamePasswordToken token = new UsernamePasswordToken("javass","cc");
  token.setRememberMe(true);

  Subject currentUser = SecurityUtils.getSubject();
  currentUser.login(token);

  boolean flag = currentUser.isPermitted("p1");
  System.out.println("flag==" + flag);
  }
}

私塾在线原创,转载请注明http://sishuok.com/forum/blogPost/list/0/7451.html


本文转载自:http://sishuok.com/forum/blogPost/list/7451.html;jsessionid=C80F0E848FB96291C0926420CB38C104

共有 人打赏支持
boonya
粉丝 72
博文 211
码字总数 43922
作品 0
成都
高级程序员
Shiro权限控制框架入门1:Shiro的认证流程以及基本概念介绍

前言:我在最开始学习Shiro这个框架时,在网上搜索到的一个介绍比较全面的教程是:《跟我学Shiro》系列教程。但是在我看了他写的前几篇文章后,我发现虽然他在这个系列教程中把shiro的一些特...

pangfc ⋅ 2017/01/06 ⋅ 0

shiro简单入门

shiro简介绍; Apache Shiro是Java的一个安全框架。 Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等 Authentication:身份认证/登录,验证用户是不是拥有相应的身份;...

xpttxsok ⋅ 2016/04/24 ⋅ 0

【Shiro】Shiro从小白到大神(一)-Shiro入门

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

qq_26525215 ⋅ 2017/09/22 ⋅ 0

zhaoml529/SpringMVC-Activiti5.16-Shiro

SpringOA简介 基于SpringMVC+Shiro+Activiti 5.16 的简单OA,可以快速入门Activiti学习用。 此版本前台使用的是EasyUI 框架简介 框架以Spring Framework为核心、Spring MVC作为模型视图控制器...

zhaoml529 ⋅ 2017/05/19 ⋅ 0

Shiro权限控制框架入门2:如何将Shiro非入侵地整合到SpringMVC等Web项目中

前言:我在上一篇文章(PS:https://www.zifangsky.cn/770.html)中介绍了shiro框架的一些基本概念以及自定义Realm可以实现的自定义授权和认证的目的。在这一篇文章中我将介绍如何将Shiro与S...

pangfc ⋅ 2017/01/06 ⋅ 0

结合SSM框架讲解Shiro案例--Shiro Demo

本教程结合SSM(SpringMVC + Mybatis)框架讲解Shiro(Shiro是 Java 的一个安全框架。我们经常看到它被拿来和 Spring 的 Security 来对比。),讲解的内容有自定义Shiro拦截器,Shiro Freem...

8446666 ⋅ 2016/06/29 ⋅ 8

Apache Shiro入门总结

一:数据库表结构 users:用户表,包含用户名、密码、角色ID。 roles:角色表,包含角色名。 permission:权限表,包含权限字符串(user:add),权限描述。 role_permission:中间表,包含角色和权限...

铂金小虫 ⋅ 2013/09/01 ⋅ 1

JFianl整合Shiro

原文: 入门必看 英文好的可以直接看官网教程,英文不好的可以看下开涛的博客《跟我学Shiro》系列 在看教程之前,最好了解想一些shiro的概念:Apache Shiro Terminology 自己入门时踩的坑 一...

听_风 ⋅ 2016/08/30 ⋅ 0

【shiro】入门程序

Apache Shiro是一个强大的且易用的java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,可以快速,轻松的获得任何应用程序,从最小的移动应用程序到最大的网络和...

binggetong ⋅ 2017/12/19 ⋅ 0

Apache Shiro权限控制实战,权限控制SpringMVC + Mybatis + Shiro

Demo已经部署到线上,地址是http://shiro.itboy.net, 管理员帐号:admin,密码:sojson.com 如果密码错误,请用sojson。 PS:你可以注册自己的帐号,然后用管理员赋权限给你自己的帐号,但是...

8446666 ⋅ 2016/06/29 ⋅ 3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

一张图看懂CDN全站加速产品解决方案

原文链接 本文为云栖社区原创内容,未经允许不得转载。

阿里云云栖社区 ⋅ 14分钟前 ⋅ 0

一张图看懂CDN全站加速产品解决方案

原文链接

猫耳m ⋅ 15分钟前 ⋅ 0

开启Swarm集群以及可视化管理

在搭建的两台coreos服务器上开启swarm集群 前置条件: docker均开启2375端口 同一个局域网内 主服务器上安装Portainer容器 安装Portainer容器执行: docker run -d -p 9000:9000 --restart=a...

ykbj ⋅ 33分钟前 ⋅ 0

单例设计模式

1、单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 2、饿汉式单例类 在这个类被加载时,静态变量instance会被初始化,此时类的私有构造子会被调用 饿汉式是典型...

职业搬砖20年 ⋅ 38分钟前 ⋅ 0

前端基础(四):前端国际规范收集

字数:1142 阅读时间:5分钟 前言 由于前端技术的灵活性和杂乱性,导致网上的许多解决方案不够全面甚至是完全错误,容易起到误导作用。所以,我对搜索到的解决方案往往是存疑态度。那么,如何...

老司机带你撸代码 ⋅ 40分钟前 ⋅ 0

Failed to open/create Network-VirtualBox Host-Only

虚拟机版本 : Oracle Vm VirtualBox 5.2.12 报错时机:开网卡二,重启虚拟机报错 "Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Ada......

p至尊宝 ⋅ 43分钟前 ⋅ 0

springMVC接收表单时 Bean对象有Double Int Char类型的处理

前台ajax提交表单price为double类型 后台controller就介绍不到 400错误 前台 实体类: public class ReleaseMapIconConfig{ private String id; private long maxValue; private long minVal......

废柴 ⋅ 49分钟前 ⋅ 0

ZOOKEEPER安装

工作需要在ubuntu上配置了一个zookeeper集群,有些问题记录下来。 1. zookeeper以来java,所以首先要安装java。但是ubuntu系统有自带的jdk,需要通过命令切换java版本: $ sudo update-alter...

恰东 ⋅ 52分钟前 ⋅ 0

linux 进程地址空间的一步步探究

我们知道,在32位机器上linux操作系统中的进程的地址空间大小是4G,其中0-3G是用户空间,3G-4G是内核空间。其实,这个4G的地址空间是不存在的,也就是我们所说的虚拟内存空间。 那虚拟内存空间...

HelloRookie ⋅ 52分钟前 ⋅ 0

myatis #{}与${}区别及原理

https://blog.csdn.net/wo541075754/article/details/54292751

李道福 ⋅ 55分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部