java安全框架-Shiro学习笔记(三)-权限认证
来源:互联网 发布:哪些手机可以刷ubuntu 编辑:程序博客网 时间:2024/05/16 13:51
权限认证:
1、权限认证核心要素
权限认证,也就是访问控制,即在应用中控制谁能访问哪些资源。在权限认证中,最核心的三个要素是:权限,角色和用户。权限:即操作资源的权利,比如访问某个页面,以及某个模块的数据的添加,修改 ,删除,查看的权利;角色:是权限的集合,一个角色可以包含多个权限用户:在shiro中,代表访问系统的用户,即Subject
2、授权
1)编程式授权a)基于角色的访问控制b)基于权限的访问控制2)注解式授权3)Jsp标签授权
由于测试的方法多,这里我们需要引入单元测试Junit,同样在pom.xml中加入Junit的依赖jar包。
封装我们的shiro登录,做一个ShiroUtil,方便我们调用。
package com.feiyang.util;import org.apache.shiro.SecurityUtils;import org.apache.shiro.authc.UsernamePasswordToken;import org.apache.shiro.config.IniSecurityManagerFactory;import org.apache.shiro.mgt.SecurityManager;import org.apache.shiro.subject.Subject;import org.apache.shiro.util.Factory;public class ShiroUitl {public static Subject login(String configFile, String userName, String password) {// 读取配置文件,初始化SecurityManager工厂Factory<SecurityManager> factory = new IniSecurityManagerFactory(configFile);// 获取securityManager实例SecurityManager securityManager = factory.getInstance();// 把securityManager实例绑定到SecurityUtilsSecurityUtils.setSecurityManager(securityManager);// 得到当前执行的用户Subject subject = SecurityUtils.getSubject();// 创建token令牌,用户名/密码UsernamePasswordToken token = new UsernamePasswordToken(userName, password);try{//身份验证subject.login(token);System.out.println("身份登录成功 ");}catch(Exception e){e.printStackTrace();System.out.println("身份登录成失败");}return subject;}}
一、基于角色的身份判断
准备配置文件,shiro_role.ini,用于描述用户的登录信息以及角色信息。
准备配置文件,shiro_role.ini,用于描述用户的登录信息以及角色信息。
然后创建junt Test Cas,进行测试:
package com.feiyang.shiro;import java.util.Arrays;import org.apache.shiro.subject.Subject;import org.junit.Test;import com.feiyang.util.ShiroUitl;public class RoleTest {@Testpublic void testHasRole() {System.out.println("---------判断是否有role1角色------------");Subject subject =ShiroUitl.login("classpath:shiro_role.ini", "feiyang", "123456");boolean hasRole = subject.hasRole("role1");System.out.println(hasRole?"有role1角色":"没有role1角色");System.out.println("---------判断是否有role1,role2,role3角色------------");boolean[] hasRoles = subject.hasRoles(Arrays.asList("role1","role2","role3"));System.out.println(hasRoles[0]?"有role1角色":"没有role1角色");System.out.println(hasRoles[1]?"有role2角色":"没有role2角色");System.out.println(hasRoles[2]?"有role3角色":"没有role3角色");subject.hasRoles(Arrays.asList("role1","role2","role3"));System.out.println("---------判断是否拥有role1,role2,role3三个权限------------");System.out.println(subject.hasAllRoles(Arrays.asList("role1","role2","role3"))?"具备role1,role2,roel3三个角色":"不具备role1,role2,roel3三个角色");}}二、基于权限的身份判断
准备配置文件,shiro_permissopn.ini,用于描述用户的登录信息以及角色和权限信息。
然后创建junt Test Cas,进行测试:
package com.feiyang.shiro;import org.apache.shiro.subject.Subject;import org.junit.Test;import com.feiyang.util.ShiroUitl;public class PermissionTest {@Testpublic void testPermitted() {Subject subject = ShiroUitl.login("classpath:shiro_permission.ini","feiyang", "123456");//单个权限的判断System.out.println(subject.isPermitted("user:select")?"有user:select权限":"没有user:select权限");System.out.println(subject.isPermitted("user:delete")?"有user:delete权限":"没有user:delete权限");//多个权限的判断subject.isPermitted("user:delete","user:select");//全部权限的判断}@Testpublic void testPermitted2() {//多个权限的判断Subject subject = ShiroUitl.login("classpath:shiro_permission.ini","jack", "1234");boolean[] permitted = subject.isPermitted("user:delete","user:select");System.out.println(permitted[0]?"有user:delete权限":"没有user:delete权限");System.out.println(permitted[1]?"有user:select权限":"没有user:select权限");}@Testpublic void testPermitted3() {//全部权限的判断Subject subject = ShiroUitl.login("classpath:shiro_permission.ini","feiyang", "123456");System.out.println(subject.isPermittedAll("user:select","user:delete","user:add")?"user:select,user:delete,user:add三个权限都有":"ser:select,user:delete,user:add三个权限不都有");}}测试结果,大家自己运行下就好了。
0 0
- java安全框架-Shiro学习笔记(三)-权限认证
- java安全框架-Shiro学习笔记(二)-身份认证
- 安全认证框架Shiro(三)- 源码角度解析shiro的权限验证
- java安全框架-Shiro学习笔记(七)-自定义realm
- java安全框架-Shiro学习笔记(五)-Shiro集成Web
- 权限项目总结(三) shiro 认证
- (三)shiro权限认证(授权)
- 安全认证框架Shiro (二)- shiro过滤器工作原理
- shiro (java安全框架)
- shiro权限框架详解04-shiro认证
- java安全框架-Shiro学习笔记(六)-url匹配方式+shiro标签使用+session会话机制
- java安全框架-Shiro学习笔记(一)-入门小案例
- java安全框架-Shiro学习笔记(四)-注解式授权+Jsp标签授权
- java安全框架-Shiro学习笔记(八)-加密工具类
- shiro安全框架笔记
- Shiro学习之权限认证
- 安全认证框架Shiro (一)- ini配置文件
- 安全认证框架-Apache Shiro研究心得
- UIImageView
- from表单中的lable标签
- UVA - 133 The Dole Queue 单纯模拟:1A
- 华为机试---抛小球(算法)
- Matlab基本数值计算功能
- java安全框架-Shiro学习笔记(三)-权限认证
- CTF 【每日一题20160626】简单的PE文件逆向
- INFO: Illegal access: this web application instance has been stopped already
- Shadowsocks 使用说明
- js获取浏览器body或窗宽度高度
- 【疑难杂症】-CentOS-修改python版本后yum运行出错
- Android-Studio-常用配置和快捷键
- Objective-C编码规范:26个方面解决iOS开发问题
- QT5 LNK2019 无法解析的外部符号