shiro框架中的shiro编程式授权

搭建shiro环境依赖包:

<dependencies>
        <!--引入shiro所需的jar包-->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.4.0</version>
        </dependency>
        <!--日志-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.12</version>
        </dependency>
    </dependencies>

测试类:是否登录成功:

public class ShiroDemo1 {
    public static void main(String[] args) {
        //创建Factory得到核心类:SecurutyManager;
        Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
        SecurityManager securityManager = factory.getInstance();
        //当前用户Subject——>SecurityUtils
        SecurityUtils.setSecurityManager(securityManager);
        //当前用户:
        Subject user = SecurityUtils.getSubject();
        //通过UsernamePasswordToken来模拟html/jsp传递过来的用户名和密码
        UsernamePasswordToken token = new UsernamePasswordToken("admin","123456");
        //通过shiro来判断用户是否登录成功
        try {
            user.login(token);
            System.out.println("登录成功!");
        } catch (AuthenticationException e) {
            System.out.println("登录失败!");
        }

    }
}

搭建成功;

ShiroUtil类:

public class ShiroUtil {
    public static Subject login(String configPath,String username,String password) {
        //创建Factory得到核心类:SecurityManager;
        Factory<SecurityManager> factory = new IniSecurityManagerFactory(configPath);
        SecurityManager securityManager = factory.getInstance();
        //当前用户Subject——>SecurityUtils
        SecurityUtils.setSecurityManager(securityManager);
        //当前用户:
        Subject user = SecurityUtils.getSubject();
        //通过UsernamePasswordToken来模拟html/jsp传递过来的用户名和密码
        UsernamePasswordToken token = new UsernamePasswordToken(username,password);
        //通过shiro来判断用户是否登录成功
        try {
            user.login(token);
            System.out.println("登录成功!");
        } catch (AuthenticationException e) {
            System.out.println("登录失败!");
        }
        return user;
    }
}

判断用户是否具有某个角色:

ShiroDemo测试:

public class ShiroDemo {
    public static void main(String[] args) {
      Subject user = ShiroUtil.login("classpath:shiro_role_permission.ini","superbird","123456");
      //判断用户是否拥有某个角色
        boolean flag1=user.hasRole("system");
        System.out.println("flag1="+flag1);
        List<String> roles = Arrays.asList("role1","role2","system");
        boolean[] flags = user.hasRoles(roles);
        System.out.println(Arrays.toString(flags));

    }
}

shiro_role_permission.ini配置文件(仅供参考):

[users]
superbird = 123456 ,system
bigbird = 123,role1,role2

[roles]
system = InRoom:select,InRoom:insert,InRoom:xiaofei,InRoom:update,VIP:select,VIP:guanli,VIP:add,
role1 = InRoom:xiaofei
role2 = VIP:select,VIP:add

判断用户是否具有一个或多个权限:

public class ShiroDemo {
    public static void main(String[] args) {
        Subject user = ShiroUtil.login("classpath:shiro_role_permission.ini","superbird","123456");
        //判断用户是否具有某个具体权限
        boolean flag1 = user.isPermitted("InRoom:xiaofei");
        System.out.println("flag="+flag1);
        //判断用户是否具有多个权限
        boolean[] flag2 = user.isPermitted("InRoom:xiaofei", "InRoom:update");
        System.out.println("flags="+ Arrays.toString(flag2));
    }
}

官网学习:
shiro官网:
Apache Shiro | Simple. Java. Security.
http://shiro.apache.org/

视频教程学习:W3Cschool shiro教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值