Shiro的应用深入学习

原创 2016年05月31日 17:47:37

     上一篇中宏观上分享了Shiro的原理,今天将分享基于url的权限认证授权,以及Shiro的认证与授权的原理和流程

基于url的权限管理流程

                                    

优点:

  使用基于url拦截的权限管理方式,实现起来比较简单,不依赖框架,使用web提供filter就可以实现。

问题:

  需要将所有的url全部配置起来,有些繁琐,不易维护,url(资源)和权限表示方式不规范。

Shiro的认证流程

                                                                  
执行流程:

     1、通过ini配置文件创建securityManager

     2、调用subject.login方法主体提交认证,提交的token

     3、securityManager进行认证,securityManager最终由ModularRealmAuthenticator进行认证。

     4、ModularRealmAuthenticator调用IniRealm(给realm传入token) 去ini配置文件中查询用户信息

     5、IniRealm根据输入的token(UsernamePasswordToken)从 shiro-first.ini查询用户信息,根据账号查询用户信息(账号和密码)

     如果查询到用户信息,就给ModularRealmAuthenticator返回用户信息(账号和密码)

     如果查询不到,就给ModularRealmAuthenticator返回null

     6、ModularRealmAuthenticator接收IniRealm返回Authentication认证信息

      如果返回的认证信息是null,ModularRealmAuthenticator抛出异常(org.apache.shiro.authc.UnknownAccountException) 

       如果返回的认证信息不是null(说明inirealm找到了用户),对IniRealm返回用户密码 (在ini文件中存在)和 token中的密码 进行对比,如果不一致抛出异 常(org.apache.shiro.authc.IncorrectCredentialsException

注意:

        ModularRealmAuthenticator作用进行认证,需要调用realm查询用户信息(在数据库中存在用户信息)

        ModularRealmAuthenticator行密码对比(认证过程)。

        realm:需要根据token中的身份信息去查询数据库(入门程序使用ini配置文件),如果查到用户返回认证信息,如果查询不到返回null

Shiro的授权流程

                                            
执行流程:

         1、对subject进行授权,调用方法isPermitted"permission"

         2SecurityManager执行授权,通过ModularRealmAuthorizer执行授权

         3ModularRealmAuthorizer执行realm(自定义的CustomRealm)从数据库查询权限数据

调用realm的授权方法:doGetAuthorizationInfo 

        4realm从数据库查询权限数据,返回ModularRealmAuthorizer

        5ModularRealmAuthorizer调用PermissionResolver进行权限串比对

        6、如果比对后,isPermitted"permission"realm查询到权限数据中,说明用户访问permission串有权限,否则没有权限,抛出异常。


     另外在web系统中,shiro也通过filter进行拦截。filter拦截后将操作权交给spring中配置的filterChain(过虑链儿),shiro提供很多filter。

    

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

shiro的基本认识

Shiso 1、hiro的简介 1、1Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Sp...

Apache Shiro 核心概念

Shiro框架中有三个核心概念:Subject ,SecurityManager和Realms。 2.1.1    Subject Subject一词是一个安全术语,其基本意思是“当前的操...

Apache Shiro的特点

Apache Shiro具有以下特点: 易于使用 - 易用性是这个项目的最终目标。提供易于理解的 Java Security API。广泛性 - 没有其他安全框架可以达到Apache Shiro...

Shiro入门10:自定义Realm进行授权

需求:     |---前一个的程序通过shiro-permission.ini作为数据源对权限信息进行静态配置,实际开发中从数据库中获取权限数据         就需要自定义realm,由Realm...

Shiro 管理多个realm 实现前后台分离

使用shiro 由于公司的业务上的需求前后台公用的一张表,要实现前台用户和后台用户的分离拦截需要书写多个realm 用来验证前台用户还是后台用户。直接上代码 1.书写一个自定的token User...

shiro安全框架扩展教程--如何扩展realm桥接器并退出自动清空角色资源缓存

上一章节我们知道了如何扩展自己的缓存管理

shiro实现不同身份使用不同Realm进行验证

假设现在有这样一种需求:存在两张表user和admin,分别记录普通用户和管理员的信息。并且现在要实现普通用户和管理员的分开登录,即需要两个Realm——UserRealm和AdminRealm,分别...

Apache Shiro 认证过程

3.1.1    示例 Shiro验证Subjects 的过程中,可以分解成三个不同的步骤: 1. 收集Subjects 提交的Principals(身份)和Credentials(凭证); ...

5.Authenticator(登录验证器)

Authenticator在shiro中是主要负责验证用户登录,它通常和一组Realm来协调、交互验证用户登录。一般情况下我们不会直接使用Authenticator。而是交由SecurityManag...

自学-Shiro中多Realm的配置-09

项目结构: 学习了前几节,只是知道了验证的一个流程和一些其他的原理等。 那么Realm我们该怎么去理解呢? 首先得知道Realm是什么?怎么操作?为什么要使用Realm? ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)