2021-08-19 17:08

基于Shiro的身份验证实例

wanmatea

JavaEE

(1126)

(0)

收藏

一、首先添加 junit、common-logging 及 shiro-core的Maven依赖。

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </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>
</dependencies>

二、新建一个配置文件shiro.ini,然后在里面准备一些用户名和密码。

[users]
wanmait=123456
test=123

三、测试用户登录

新建一个测试类ShiroTest,然后在里面新建一个测试方法testLogin。

public class ShiroTest {
    @Test
    public void testLogin() {

        //1、获取 SecurityManager 工厂,此处使用 Ini 配置文件初始化 SecurityManager
        Factory<SecurityManager> factory =
                new IniSecurityManagerFactory("classpath:shiro.ini");

        //2、得到 SecurityManager 实例 并绑定给 SecurityUtils
        org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();
        SecurityUtils.setSecurityManager(securityManager);

        //3、得到 Subject 及创建用户名/密码身份验证 Token(即用户身份/凭证)
        Subject subject = SecurityUtils.getSubject();
        UsernamePasswordToken token = new UsernamePasswordToken("test", "123");
        try {
            //4、登录,即身份验证
            subject.login(token);
            System.out.println("登录认证成功");
        } catch (AuthenticationException e) {
            //5、身份验证失败
            System.err.println("认证失败");
        }
        Assert.assertEquals(true, subject.isAuthenticated()); //断言用户已经登录
        //6、退出
        subject.logout();
    }
}

运行测试方法,如果账户和密码是shiro.ini文件里面配置的,那么提示登录认证成功,否则提示认证失败。

例如:

用户名:wanmait 密码:123456

输出:登录认证成功

用户名:wanmait 密码:123

输出:认证失败


0条评论

点击登录参与评论