前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shiro 集成 Spring 之加密

Shiro 集成 Spring 之加密

作者头像
一份执着✘
发布2018-08-27 16:30:01
3720
发布2018-08-27 16:30:01
举报
文章被收录于专栏:赵俊的Java专栏赵俊的Java专栏

本章我们来讲解,如果使用 Shiro 集成 Spring 后,使用加密功能。本章基础代码为上一章 : Shiro 集成 Spring 中的代码。

我们这里演示使用 md5 散列算法进行加密, 并用 TestSalt 作为盐。

首先导入上一章的代码,然后修改 spring-shiro.xml ,添加内容:

代码语言:javascript
复制
<bean id="credentialsMatcher" class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">
    <property name="hashAlgorithmName" value="md5" />
</bean>

然后将此凭证匹配器 credentialsMatcher 注入到 Realm 中 :

代码语言:javascript
复制
<bean id="myRealm" class="im.zhaojun.realm.MyRealm">
    <property name="credentialsMatcher" ref="credentialsMatcher"/>
</bean>

并在 Realm 中的 doGetAuthenticationInfo 方法里添加盐的配置 :

代码语言:javascript
复制
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken)
        throws AuthenticationException {

    System.out.println("MyRealm doGetAuthenticationInfo...");

    String username = (String) authenticationToken.getPrincipal();
    User user = selectUserByUserName(username);
    if (user == null) {
        throw new UnknownAccountException("当前账户不存在");
    }
    return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(), ByteSource.Util.bytes("TestSalt"), super.getName());
}

既然为 Relam 配置了凭证匹配器,那么就应该把我们存储的密码也进行加密,原始我们的密码为 123456,这里我们使用 md5 散列算法进行加密,并使用 TestSalt 作为 :

代码语言:javascript
复制
public class GenerateHash {
    public static void main(String[] args) {
        Md5Hash md5Hash = new Md5Hash("123456", ByteSource.Util.bytes("TestSalt"));
        System.out.println(md5Hash.toString());
    }
}

// 输出结果为 e5f728a966d050296c428290c9160dda

然后我们将 Realm 中获取的密码改为加密后的值 e5f728a966d050296c428290c9160dda :

代码语言:javascript
复制
private User selectUserByUserName(String username) {
    if ("zhao".equals(username)) {
        return new User(username, "e5f728a966d050296c428290c9160dda");
    }
    return null;
}

同上一章,运行项目,进行登陆测试,即可检验结果。

本章代码地址 : https://github.com/zhaojun1998/Premission-Study/tree/master/Permission-Shiro-05/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-232,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档