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

2018-11-06  本文已影响0人  SoSlIDIS

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 可能不仅仅是用户名/密码,也可能还有其他的,如登录时允许用户名/邮箱/手机号同时登录。)

上一篇下一篇

猜你喜欢

热点阅读