java shiro 权限_转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro受权...

如下是部份内容,具体见原文。算法

shiro介绍数据库

什么是shiroapache

shiro是Apache的一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限受权、加密、会话管理等功能,组成了一个通用的安全认证框架。它能够实现以下的功能:

1.验证用户

2.对用户执行访问控制,如:判断用户是否具备角色admin,判断用户是否拥有访问的资源权限。

3.在任何环境下使用SessionAPI。例如C/S程序

4.可使用多个用户数据源。例如一个是Oracle数据库,另一个是MySQL数据库。

5.单点登陆(SSO)功能

6."Remember Me"服务,相似于购物车的功能,shiro官方建议开启。

为什么使用shiro?浏览器

由于shiro将安全认证相关的功能抽取出来组成了一个框架,所以使用shiro就能够很是快速的完成认证、受权等功能的开发,下降系统成本。

shiro使用普遍,shiro能够运行在web应用,非web应用,集群分布式应用中愈来愈多的用户开始使用shiro.

Spring中有Spring security(原名Acegi), 是一个权限框架,它和Spring的依赖过于紧密,没有shiro使用简单。shiro不依赖于Spring,而shiro就相对独立最主要是由于shiro使用简单‘灵活,因此如今愈来愈多的用户选择shiro。

shiro核心组成部分缓存

shiro的4大组成部分——身份认证,受权,会话管理和加密

Authentication:身份验证(身份认证),简称"登陆"。

Authorization:受权,给用户给用户分配角色或者权限资源。

Session Manager:用户Session管理器,可让C/S程序也使用Session来控制权限。

Cryptography:将JDK中复杂的密码加密方式进行封装。

除了以上功能,shiro还提供不少扩展功能:

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

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

Concurrency:多线程相关功能。

Testing:帮助咱们进行测试相关的功能。

"Run As":一个容许用户假设为另外一个用户身份(若是容许)的功能,有时候在管理脚本时颇有用。

"Remember  Me":记住用户身份,提供相似购物车的功能。

shiro运行大体流程:安全

Subject——主体,是与程序进行交互的对象,能够是人也能够是服务或其余程序,一般理解为用户。全部的Subject实例都必须绑定到一个SecurityManager上。咱们与Subject交互,运行时shiro会自动转化为与SecurityManager交互的特定的subject的交互。

SecurityManager——SecurityManager是shiro的核心,初始化时协调各个模块运行。然而,一旦SecurityManager协调完毕,SecurityManager会被单独留下,且咱们只须要去操做Subject便可,无需操做SecurityManager。可是须要了解的是当咱们与一个Subject进行交互时,实质上是SecurityManager在处理Subject的安全操做。

Realms——Realms在shiro中做为程序和安全数据之间的"桥梁"或"链接器"。它用于获取安全数据来判断subject是否可以登陆,subject拥有什么权限。有点相似于DAO。在配置realms时,须要至少一个realm。并且shiro提供了一些经常使用的Realms来链接数据源,如LDAP数据源的JndiLdapRealm,JDBC数据源的JdbcRealm,ini文件数据源的iniRealm,Properties文件数据源的PropertiesRealm,等等,咱们也能够插入本身的Realm实现来表明自定义的数据源。像其余组件同样,Realms也是由SecurityManager控制。

shiro架构session

Subject:(org.apache.shiro.subject.Subject)  即主体,简称用户,主体既能够是用户也能够是程序,主体访问系统,系统须要对主体进行认证、受权。外部应用与subject进行交互,Subject记录了当前操做用户,将用户的概念理解为当前操做的主体,多是一个经过浏览器请求的用户,也多是一个运行的程序。Subject在shiro中是一个接口,接口中定义了不少认证受权相关的方法,外部程序经过subject进行认证受权,而Subject是经过SecurityManager安全管理器进行认证受权。

SecurityManager:(org.apache.shiro.mgt.SecurityManager)如上所述,SecurityManager是shiro的核心,协调shiro的各个组件。SecurityManager就是安全管理器,负责对所有的subject进行安全管理。经过SecurityManager能够完成Subject的认证、受权等,实质上SecurityManager是经过Authenticator对主体进行认证,经过Authorizer对主体进行受权,经过SessionManager进行会话管理等等。SecurityManager是一个接口,继承了Authenticator,Authorizer,SessionManager这三个接口。

Authenticator:(org.apache.shiro.authc.Authenticator) 即认证器,对用户身份进行认证,Authenticator是一个接口,shiro提供ModularRealmAuthenticator实现类,经过ModularRealmAuthenticator基本上能够知足大多数需求,也能够自定义认证器。

Authorizer:(org.apache.shiro.authz.Authorizer)即受权器,用户在经过认证器认证经过后,在访问时须要经过受权器判断用户是否有此功能的操做权限。最终是经过认证器对主体进行受权的。

Realm:(org.apache.shiro.realm.Realm)Realm即领域,至关于DataSource数据源,经过Realm存取认证、受权相关数据。SecurityManager经过认证器对主体进行安全认证须要经过Realm获取用户身份数据,好比:若是用户身份数据在数据库,那么Realm就须要从数据库获取用户的身份信息。受权也是如此,也须要经过Realm取出受权相关信息。注意:不要将Realm理解成只是从数据源获取数据,在Realm中还有认证受权校验的相关代码

SessionManager:(org.apache.shiro.session.SessionManager)会话管理。web应用中通常是web容器对Session进行管理,shiro框架定义了一套会话管理,它不依赖于web容器的Session,因此shiro可使用在非web应用上,也能够将分布式应用的会话集中在一点进行管理,此特性可以使它实现单点登陆。

SessionDAO:SessionDAO即会话dao,是对Session会话操做的一套接口,好比要将Session存储到数据库,能够经过JDBC将会话存储到数据库。针对个性化的Session数据存储(存到数据库)须要使用SessionDAO。

CacheManager:(org.apahce.shiro.cache.CacheManager)缓存管理器,主要对Session和受权数据进行缓存,好比将受权数据经过cachemanager进行缓存管理,和ehcache整合对缓存数据进行管理,能够减小没必要要的后台访问,提升应用效率,增长用户体验。

Cryptography:(org.apache.shiro.crypto.*)密码管理,提供了一套加密/解密组件,对JDK中的加密解密算法进行了封装,方便开发。好比提供经常使用的散列、加/解密等功能,好比MD5散列算法。

---------------------

做者:LIUXUN1993728

来源:CSDN

原文:https://blog.csdn.net/u013087513/article/details/75051134

版权声明:本文为博主原创文章,转载请附上博文连接!多线程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值