QQ 1274510382
Wechat JNZ_aming
商业联盟 QQ群538250800
技术搞事 QQ群599020441
解决方案 QQ群152889761
加入我们 QQ群649347320
共享学习 QQ群674240731
纪年科技aming
网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。
叮叮叮:产品已上线 —>关注 官方-微信公众号——济南纪年信息科技有限公司
民生项目:商城加盟/娱乐交友/创业商圈/外包兼职开发-项目发布/
安全项目:态势感知防御系统/内网巡查系统
云服项目:动态扩容云主机/域名/弹性存储-数据库-云盘/API-AIeverthing
产品咨询/服务售后(同)
纸上得来终觉浅,绝知此事要躬行 !!!
寻找志同道合伙伴创业中。。。抱团滴滴aming联系方式!!
#本文为广告系统自动投放广告
# 如有侵权 删改 请速速联系我们
#3 Shiro 的授权初步实现
3.1 判断角色
3.1.1 修改配置文件
直接在密码后面添加用户包含的角色名即可。
[users]
zhangsan=zs,role1,role2
lisi=ls
3.1.2 添加代码
hasRole()通过返回值判断用户是否具有指定角色。
if(subject.isAuthenticated){
System.out.println("登录成功");
boolean hasRoleResult = SecurityUtils.getSubject().hasRole("role1");
System.out.println("result:"+hasRoleResult);
}
通过 subject 看是否 有角色
3.2 判断权限
3.2.1 修改配置文件
[users]
zhangsan=zs,role1,role2
lisi=ls
[roles]
role1=permission1,permission2
3.2.2 添加测试代码
在认证成功之后授权
通过是否出现 AuthenticationException 异常控制是否有指定权限。
SecurityUtils.getSubject().checkPermission("permission");
扫描二维码关注公众号,回复:
12424618 查看本文章
4 Realm 实现认证
4.1 使用 iniRealm
public class ShiroRun {
public static void main(String[] args) {
SecurityManager securityManager = new DefaultSecurityManager();
IniRealm iniRealm = new IniRealm("classpath:shiro.ini");
securityManager.setRealm(iniRealm);
SecurityUtils.setSecurityManager(securityManager);
Subject subject = SecurityUtils.getSubject();
//web 项目时,用户名和密码是客户端表单传递过来的用户名和密码。
AuthenticationToken token = new UsernamePasswordToken("admin",
"pwd");
try {
//login()方法没有返回值,只能通过是否有异常判断是否登录成功。
subject.login(token);
System.out.println("登录成功");
} catch (UnknownAccountException e) {
System.out.println("账号不存在");
} catch (IncorrectCredentialsException e) {
System.out.println("密码错误");
} catch (AuthenticationException e) {
e.printStackTrace();
}
}
}