Shiro认证流程及授权

Shiro概要架构

在概念层面,Shiro 架构包含三个主要的理念:
在这里插入图片描述

Subject :主体对象,负责提交用户认证和授权信息。
SecurityManager:安全管理器,负责认证,授权等业务实现。
Realm:领域对象,负责从数据层获取业务数据。

Shiro认证流程

在这里插入图片描述
1)系统调用subject的login方法将用户信息提交给SecurityManager。
2)SecurityManager将认证操作委托给认证器对象Authenticator。
3)Authenticator将用户输入的身份信息传递给Realm。
4)Realm访问数据库获取用户的信息然后对信息进行封装并返回。
5)Authenticator对Realm返回的信息进行身份认证。

核心业务分析

在这里插入图片描述
1)客户端请求到达Controller,Controller里调用subject.login方法拿到用户的信息,把用户的信息通过token进行封装然后传递给SecurityManager。
2)SecurityManager是接口,所以通过配置DefaultWebSecurityManager实现类进行认证。
3)DefaultWebSecurityManager拿到用户信息后调用Authenticator完成认证。
4)Authenticator有了用户信息还要调用Realm中的相关方法获取数据库中的数据来进行认证。
5)按照shiro框架定义的规范写一个ShiroRealm对象,通过该对象借助Dao获取数据,然后在Authenticator中完成认证。

授权流程分析

在这里插入图片描述
1)系统调用subject相关方法将用户信息(例如isPermitted)递交给SecurityManager。
2)SecurityManager将权限检测操作委托给Authorizer对象。
3)Authorizer将用户信息委托给realm。
4)Realm访问数据库获取用户权限信息并封装。
5)Authorizer对用户授权信息进行判定。

授权访问实现:
在需要进行授权访问的业务层方法上添加执行此方法需要的权限标识,例如@RequiresPermissions(“sys:user:update”)
说明:此要注解一定要添加到业务层方法上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值