美文网首页
从无到有学shiro。二:shiro小例子

从无到有学shiro。二:shiro小例子

作者: SoSlIDIS | 来源:发表于2018-11-06 15:02 被阅读0次

    1.概念了解  

    使用shiro主要了解几个概念 

        1.身份验证:即在应用中谁能证明他就是他本人。

        2.principals:身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。

        3.credentials:证明/凭证,即只有主体知道的安全值,如密码/数字证书等。

    2.环境准备

    1.本文使用maven构建,环境依赖如下

    <dependency>

    <groupId>junit</groupId>

    <artifactId>junit</artifactId>

    <version>4.9</version>

    </dependency>

    <dependency>

    <groupId>commons-logging</groupId>

    <artifactId>commons-logging</artifactId>

    <version>1.1.3</version>

    </dependency>

    <dependency>

    <groupId>org.apache.shiro</groupId>

    <artifactId>shiro-core</artifactId>

    <version>1.2.2</version>

    </dependency>

    2.用户身份/凭据(shiro.ini),放在class文件根目录

    [users]

    zhang=123

    wang=123

    3.测试

    @Test

    public void testHelloworld() {

     //1、获取 SecurityManager 工厂,此处使用 Ini 配置文件初始化SecurityManager

        Factory factory =new IniSecurityManagerFactory("classpath:shiro.ini");

    //2、得到 SecurityManager 实例 并绑定给SecurityUtils

    SecurityManager securityManager = factory.getInstance();

    SecurityUtils.setSecurityManager(securityManager);

    //3、得到 Subject 及创建用户名/密码身份验证 Token(即用户身份/凭证)

    Subject subject = SecurityUtils.getSubject();

    UsernamePasswordToken token =new UsernamePasswordToken("zhang","123");

    try {

    //4、登录,即身份验证

            subject.login(token);

    System.out.println(token);

    }catch (AuthenticationException e) {

    //5、身份验证失败

        }

    //断言用户已经登录

        Assert.assertEquals(true, subject.isAuthenticated());

    //6、退出

        subject.logout();

    }

    4.运行测试用例

        运行结果通过且输出用户token则证明shiro测试通过。

            1、收集用户身份/凭证,即如用户名/密码;

            2、调用 Subject.login 进行登录,如果失败将得到相应的 AuthenticationException 异常,根据异常提示用户错误信息;否则登录成功;

            3、最后调用 Subject.logout 进行退出操作。

        (1、用户名/密码硬编码在 ini 配置文件,以后需要改成如数据库存储,且密码需要加密存储; 2、用户身份 Token 可能不仅仅是用户名/密码,也可能还有其他的,如登录时允许用户名/邮箱/手机号同时登录。)

    相关文章

      网友评论

          本文标题:从无到有学shiro。二:shiro小例子

          本文链接:https://www.haomeiwen.com/subject/ozbyxqtx.html