Shiro基础知识与集成应用

1、Shiro可以完成: 【认证、授权、加密、会话管理】、与Web集成、缓存等

2、特点: 易于使用、全面、灵活、强力支持Web、兼容性强、社区支持

外部观看

内部观看

3、 登录认证:

1)身份验证:一般需要提供如身份ID等一些标识信息来表明登录者的身份,如提供email,用户名/密码来证明

2)在shiro中,用户需要提供principals(身份)和credentials(证明)给shiro,从而应用能验证用户身份

3)principals:身份,即主体的标识属性,可以是任何属性。如用户名、邮箱等,唯一即可。一个主体可以有多个principals,但只有一个Primary principals,一般是用户名/邮箱/手机号

4)credentials:证明/凭证,即只有主体知道的安全值,如密码/数字证书等

5)最常见的principals和credentials组合就是用户名/密码

一个简单的登录demo测试代码

角色与授权

1、授权:访问控制,即在应用中控制谁访问哪些资源(如访问页面/编辑数据/页面操作等)。在授权中需了解的几个关键对象: 主体(Subject)、资源(Resource)、权限(Permission)、角色(Role)

2、主体: 访问应用的用户,在Shiro中使用Subject代表该用户。用户只有授权后才允许访问相应的资源

3、资源: 在应用中用户可以访问的URL,比如访问JSP页面,查看/编辑某些数据、访问某个业务方法、打印文本等等都是资源。用户只要授权后才能访问

4、权限: 安全策略中的院子授权单位,通过权限我们可以表示在应用中用户,有没有操作某个资源的权力。即权限表示在应用中用户能不能访问某个资源,如:访问用户列表页面查看/新增/修改/删除用户数据等。权限代表了用户有没有操作某个资源的权利,即反映在某个资源上的操作允不允许

5、Shiro支持粗粒度权限和细粒度权限

6、角色: 权限的集合。 一般情况下会赋予用户角色而不是权限,即这样用户可以拥有一组权限,赋予权限时比较方便

授权流程:

判断角色与权限的Demo代码

Shiro加密

1、带盐的md5加密,盐就是在密码明文后拼接新字符串,然后再进行加密

2、多次进行md5的迭代加密

3、使用父类进行加密

//shiro自带了多种加密的方法

Shiro自定义登录认证 【需要继承 AuthenticatingRealm 实现 doGetAuthenticationInfo 方法】

//自定义登录认证方法,shiro的login方法底层会调用该类的认证方法进行认证

//需要配置自定义的realm生效,在ini文件中配置,在springboot中配置

步骤:

获取身份信息、获取凭证信息、获取数据库中存储的用户信息、创建封装校验逻辑对象,封装数据返回


一、rememberMe功能:

二、对用户进行角色和权限的设置

在自定义实现的Realm中,继承AuthorizingRealm 需要实现两个方法,其中doGetAuthorizationInfo是自定义授权的方法 以下代码仅进行示例 实际可能通过某种方式获取用户的实际角色和权限, 然后赋值 。 然后可以使用shiro的注解功能进行某些角色或权限的控制 。 **实际工作中可能需要更完善的权限验证规则

三、对全局进行的异常处理

@ControllerAdvice是在类上声明的注解。

@ExceptionHandler注解标注的方法:用于捕获Controller中抛出的不同类型的异常,从而达到异常全局处理的目的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值