SpringBoot整合Shiro实现权限管理,经典实战教程

String username = authenticationToken.getPrincipal().toString();

if(!username.equals(“zhang”)){

throw new UnknownAccountException(“此用户不存在”);

}

//返回验证信息,参数:1、用户名 2、正确密码 3、realm名称

return new SimpleAuthenticationInfo(username,“123”, getName());

}

}

2) 使用自定义Realm进行登录和授权

//创建默认安全管理器

DefaultSecurityManager securityManager = new DefaultSecurityManager();

//安全管理器配置自定义Realm

securityManager.setRealm(new MyRealm());

//SecurityUtils配置安全管理器

SecurityUtils.setSecurityManager(securityManager);

//获得Subject对象

Subject subject = SecurityUtils.getSubject();

//创建账号密码token

UsernamePasswordToken user = new UsernamePasswordToken(“zhang”, “123”);

//登录验证

subject.login(user);

//权限判断

System.out.println(“是否拥有role1角色:” + subject.hasRole(“role1”));

System.out.println(“是否拥有delete权限:” + subject.isPermitted(“user:delete”));

[](

)密码加密加盐

====================================================================

用户密码一般不会以明文方式保存,这样无法保证安全性,所以一般都需要加密。

SimpleHash类可以实现基本的加密,几种创建方式:

new SimpleHash(“加密算法”,“原始密码”)

new SimpleHash(“加密算法”,“原始密码”,盐)

new SimpleHash(“加密算法”,“原始密码”,盐,迭代次数)

参数说明:

加密算法一般使用常用的md5算法

盐的作用是提高密码安全性,如两个用户的原始密码都是123,则加密后的密文都是相同的,如果破解了一个用户的密码,另一个用户的密码也一同破解了,如果给密码加盐,每个用户的盐不同,加密后密码就都会不同,增加了破解难度。

迭代次数是加密一次后,再对密文再次加密,也能提高安全性。

下面我们以md5算法对“123456”加密,盐是“007”,迭代次数为10。

SimpleHash md5 = new SimpleHash(“md5”, “123456”,ByteSource.Util.bytes(“007”), 10);

System.out.println(md5);

输出:44202d045439dc33a2e43d2828d08e19

修改MyRealm的doGetAuthenticationInfo方法,这里将密文和盐直接写在代码中,实际应用时密文和盐是通过用户名从数据库中查询出来的。

//返回验证信息,参数:1、用户名 2、正确密码 3、盐 4、realm名称

return new SimpleAuthenticationInfo(username,“44202d045439dc33a2e43d2828d08e19”, ByteSource.Util.bytes(“007”),getName());

需要给自定义Realm添加密码匹配器

//创建默认安全管理器

DefaultSecurityManager securityManager = new DefaultSecurityManager();

//安全管理器配置自定义Realm

MyRealm realm = new MyRealm();<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值