【Shiro框架总结】3. 认证

目录

1. 身份认证流程

2. 具体实现

3. 加密、盐值加密

4. 多realm的实现、策略

 

一、身份认证

1. 身份验证

身份验证:一般需要提供如身份 ID 等一些标识信息来表明登录者的身份,如提供 email,用户名/密码来证明。
在 shiro 中,用户需要提供 principals (身份)和 credentials(证明)给 shiro,从而应用能验证用户身份。

 

  •  principals:身份,即主体的标识属性。可以是任何属性,如用户名、邮箱等,唯一即可。一个主体可以有多个 principals,但只有一个Primary principals,一般是用户名/邮箱/手机号。
  •  credentials:证明/凭证,即只有主体知道的安全值,如密码/数字证书等。

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

2. 身份验证流程

 

二、具体实现

1. 创建一个表单界面

 

2. 创建一个Handler

【提示】项目里面配置了视图解析器

 

3. 配置applicationContext.xml里面的过滤器

【提示】上面property的name的属性值不是自定义的,是固定的。

 

4. 编辑Realm

                 

                

(1)认证流程

(2)密码对比

         https://blog.csdn.net/acmman/article/details/78446008

【提示】doGetAuthenticationInfo方法的参数token是Controller的login方法的参数传递过来的!密码的对比是由shiro自动完成的。

 

5. 密码加密

(1)在applicationContext.xml中配置realm

   

 【提示】配置完成之后,前台的明文密码会被自动加密!

 

(2)原密码 123456 加密后的结果,加密后的结果是要存到数据库的

    

(3)把步骤二中加密后的结果粘贴到下面,其实就是模拟从数据库中获取的密码

        

(4)测试

前台输入密码123456,配置文件中的realm配置会把前台的密码加密,然后shiro会把从数据库中获取的密码与加密后的前台密码比对!

 

6. 盐值加密

(1)为什么要进行盐值加密?

因为两个人的密码如果一样,那么加密后的密码也是一样的!为了防止出现这种情况,也就是实现两个人的明文密码即使一样,加密之后的密文密码也不一样,这就是盐值加密。

(2)如何实现

(3)具体步骤

  • 给name是admin、user且密码都是123456的用户进行盐值加密,加密后的密码不一致

 

  • 具体实现

 

7.多realm验证

上面的是ShiroRealm,是MD5加密的。SecondRealm是SHA1加密,下面是改动的地方

(1)修改加密算法

     

(2)配置

 

 

修改下面的

改成下面的这样

【注意】多realm的验证是有顺序的!与list集合配置的顺序一样

(3)多realm的另外一种配置

 

8. 多realm的认证策略

 

(1)修好默认的认证策略

(2)还原默认的多realm认证策略 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值