zoukankan      html  css  js  c++  java
  • 3、Shiro授权

    Shiro授权过程和认证过程相似:

    项目结构:

    package com.shiro.shiroframe;
    
    import org.apache.shiro.SecurityUtils;
    import org.apache.shiro.authc.UsernamePasswordToken;
    import org.apache.shiro.mgt.DefaultSecurityManager;
    import org.apache.shiro.realm.SimpleAccountRealm;
    import org.apache.shiro.subject.Subject;
    import org.junit.jupiter.api.BeforeEach;
    import org.junit.jupiter.api.Test;
    
    public class ShiroAuthorizerTest {
        //realm,暂时用来存储我们假造的用户信息
        SimpleAccountRealm simpleAccountRealm=new SimpleAccountRealm();
        @BeforeEach
        public void setUserMsg(){
            //添加一个用户信息并设置角色为admin
            simpleAccountRealm.addAccount("houru","miyue","admin","user");//设置该用户既是管理员又是普通用户
        }
        @Test
        public void ShiroAuthorizerTest() {
            //构建SecurityManager环境
            DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();
            //SecurityManager环境下设置realm
            defaultSecurityManager.setRealm(simpleAccountRealm);
            //SecurityUtils先获取SecurityManager环境
            SecurityUtils.setSecurityManager(defaultSecurityManager);
          //获取subject
            Subject subject= SecurityUtils.getSubject();
            //通过UsernamePasswordToken组织提交认证所要传递的参数
            UsernamePasswordToken usernamePasswordToken=new UsernamePasswordToken("houru","miyue");
            //登录认证
            subject.login(usernamePasswordToken);
            //打印是否认证通过:subject.isAuthenticated()
            System.err.println(subject.isAuthenticated());
            //权限认证
            //检查当前用户是否具有admin角色权限
            subject.checkRole("admin");
            //检查当前用户是否具有admin,user等角色权限
            subject.checkRoles("admin","user");
        }
    }
  • 相关阅读:
    flask(十)使用alembic,进行数据库结构管理,升级,加表,加项
    Python sqlalchemy使用
    flask+script命令行交互工具
    flask+APScheduler 任务调度,计划任务,定时任务
    DBA日常工作职责
    Oracle 的 VKTM 进程
    linux
    UF2.0、O4、UFT、TA众明星背后的秘密
    ORA-01502: 索引或这类索引的分区处于不可用状态
    关于Optimizer_index_cost_adj参数的设置
  • 原文地址:https://www.cnblogs.com/luzhanshi/p/11024059.html
Copyright © 2011-2022 走看看