Shiro入门

》#千锋逆战#
要添加的依赖
pom.xml

<dependencies>
        <!--shiro-core -->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

写一个ini文件
shiro.ini

[users]
zhangsan=123,admin, guest
lisi=456,guest
[roles]
admin=select, save, update, delete
guest=select, update

测试

public static void main(String[] args) {
        // 构建SecurityManager工厂,IniSecurityManagerFactory可以从ini文件中初始化SecurityManager环境
        IniSecurityManagerFactory factory = new IniSecurityManagerFactory();

        // 通过工厂创建SecurityManager
        SecurityManager manager = factory.getInstance();

        // 将SecurityManager设置到运行环境中
        SecurityUtils.setSecurityManager(manager);

        //创建一个Subject实例,该实例认证需要使用上面创建的SecurityManager
        Subject subject = SecurityUtils.getSubject();

        Scanner input = new Scanner(System.in);

        System.out.println("请输入用户名:");
        String username = input.next();
        System.out.println("请输入密码:");
        String password = input.next();

        //创建token令牌,账号和密码是ini文件中配置的
        UsernamePasswordToken token = new UsernamePasswordToken(username, password);

        try {
            //用户登录
            subject.login(token);
        } catch (UnknownAccountException e) {
            System.out.println("未知账户");
            e.printStackTrace();
        } catch (CredentialsException e) {
            System.out.println("密码错误");
            e.printStackTrace();
        } catch (AuthenticationException e) {
            e.printStackTrace();
        }

        System.out.println("success.");

        System.out.println(subject.hasRole("admin"));
        System.out.println(subject.hasRole("guest"));

        List<String> roles = Arrays.asList("admin", "guest");
        System.out.println(Arrays.toString(subject.hasRoles(roles)));

        System.out.println("---------");

        System.out.println(subject.isPermitted("select"));
        System.out.println(subject.isPermitted("save"));

        //List<String> primitts = Arrays.asList("select", "update");
        System.out.println(Arrays.toString(subject.isPermitted("select", "update", "save")));
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 你的第一个Apache Shiro应用 如果你是第一次接触Apache Shiro,这个简短的教程将向你展示如何创...
    倔强的小亮阅读 6,426评论 1 32
  • Shiro是一个强大的简单易用的Java安全框架,主要用来更便捷的认证,授权,加密,会话管理。Shiro首要的和最...
    CoderZS阅读 360评论 0 8
  • 简介 Shiro是一个强大的简单易用的Java安全框架,主要用来更便捷的认证,授权,加密,会话管理。Shiro首要...
    AI贺贺阅读 93,991评论 3 25
  • 前言 本文主要讲解的知识点有以下: 权限管理的基础知识模型粗粒度和细粒度的概念 回顾URL拦截的实现 Shiro的...
    Java3y阅读 2,531评论 0 62
  • 一、shiro简介 Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功...
    海天一树X阅读 1,483评论 0 9