Shiro的了解和作用(一)

1.Shiro作用
     认证(登录),授权(权限分配,权限控制). 密码加密,会话管理,缓存功能.
2.Shiro中核心对象
      主体Subject: 登录的用户或者程序.
      安全管理器SecurityManager: 请求的入口.Subject所有的方法都会交给SecurityManager进行处理 
      数据源Realm: SecurityManage会关联Realm.进行认证或者鉴权的时候,通过Realm从数据库中查询用户信息和权限信息.
3.基于ini实现Shiro认证(入门,不需要掌握)
  基于自定义Realm实现Shiro认证(实际使用,需要掌握)
  认证流程:
       1.需要把SecurityManager和Realm定义出来并关联.
       2.将SecurityManager绑定到当前的环境中(把对象设置SecurityUtils的静态属性中)
       3.通过SecurityUtils创建Subject对象. 对象默认就会关联SecurityManager
       4.进行登录需要将用户名和密码封装到UsernamePasswordToken中.
       5.调用subject.login(token);====>将请求交给SecurityManager,将请求交给认证器,认证器调用Realm返回用户信息info.把前台的密码和返回的info密码进行比对.
4.基于ini实现Shiro鉴权(入门,不需要掌握)
  基于自定义Realm实现Shiro鉴权(实际使用,需要掌握)
  提供这些API
  isPermited()===>返回boolean类型
  hasRole()===>返回boolean类型
  checkPermission(); ===>如果没有权限,会抛出异常
  checkRole();===>如果没有角色,会抛出异常
  认证流程:
     1.必须先登录
     2.调用subject.hasRole();===>调用SecurityManager的鉴权方法.将当前登录用户的对象作为参数传入,需要检查的权限传入.
     3.调用Realm根据登录用户的信息查询数据库的角色和权限集合,返回info对象给鉴权器.
     4.鉴权器根据用户返回的info,判断该用户是否有该权限信息.
5.Shiro加盐加密(了解)
   为什么进行加密: 为了用户的信息安全.
   为什么要进行加盐: 如果多个用户使用的密码都是一样,最终数据库没有加盐,密文都是一样>
   操作步骤:
      1.数据库存储的密文和盐.
      2.需要Realm中返回盐的信息.
         return new SimpleAuthenticationInfo(user,user.getPassword(), ByteSource.Util.bytes(user.getSalt()),getName());
      3.在Realm中设置匹配匹配器(设置加密算法和加密次数)
        HashedCredentialsMatcher matcher = new HashedCredentialsMatcher("md5");//加密算法
        matcher.setHashIterations(3);//加密次数
        在realm进行关联
        realm.setCredentialsMatcher(matcher);
           

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值