shiro认证通过之后的授权
阅读原文时间:2023年07月10日阅读:1

subject.hasRole("") ;

subject.hasRoles(List);

subject.hasAllRoles();

subject.isPermitted("");

修改ini文件

#配置用户名
[users]
zhangsan=123456,role1
lisi=123456,role2
wanghu=123456,role3
zhaoliu=123456,role2,role3
sunqi=123456,role4

#声明角色
[roles]
role1=user:query,user:add,user:update,user:delete,user:export
role2=user:query,user:add
role3=user:query,user:export
role4=*:*

//日志输出工具  
private static final transient Logger log = LoggerFactory.getLogger(TestAuthenticationApp.class);  
public static void main(String\[\] args) {

     String username = "zhangsan";  
     String password = "123456";

     log.info("My First Apache Shiro Application");  
     //1 创建安全管理器的工厂对象  
     Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");  
     //2 使用工厂创建安全管理器  
     SecurityManager securityManager = factory.getInstance();  
     //3 把当前的安全管理器绑定到线程  
     SecurityUtils.setSecurityManager(securityManager);  
     //4 使用SecurityUtils.getSubject() 得到主体  
     Subject currentUser = SecurityUtils.getSubject();  
    //5 封装用户名  
     AuthenticationToken arg0 = new UsernamePasswordToken(username, password);  
     currentUser.login(arg0);  
     System.out.println("认证通过");

     //退出的方法  
     //currentUser.logout();

     //判断用户是否通过认证  
     boolean authent = currentUser.isAuthenticated();  
     System.out.println(authent);

     //角色判断  
     boolean hasrole1 = currentUser.hasRole("role1");  
     System.out.println(hasrole1);  
     //分别判断集合里面的角色返回数组  
     List<String> arr = Arrays.asList("role1","role2","role3");  
     boolean\[\] arrs = currentUser.hasRoles(arr);  
     for (boolean string : arrs) {  
        System.out.println(string);  
    }

     //判断当前用户是否有 arr集合里的所有角色  
     boolean hasAllRoles = currentUser.hasAllRoles(arr);  
     System.out.println(hasAllRoles);

     //权限判断  
     boolean permitted = currentUser.isPermitted("user:query");  
     System.out.println("当前用户有当前权限吗"+permitted);  
         //分别判断  
     boolean\[\] permitted2 = currentUser.isPermitted("user:query","user:add");

         //同时判断  
     boolean permitted3 = currentUser.isPermittedAll("user:query","user:add");

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器