Java提高——05-shiro-授权的简单判断

在这里插入图片描述


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();
			 }
 		} 		
 	}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_33608000/article/details/112847820