美文网首页
Shiro学习(一) Shiro认证

Shiro学习(一) Shiro认证

作者: JiangCheng97 | 来源:发表于2020-02-12 23:43 被阅读0次

1、新建Maven项目
2、在原有的项目上新建一个module
3、在新的module模块下pom文件添加依赖

<dependencies>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>1.4.0</version>
        </dependency>

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

4、在test目录下面创建一个AuthenticationTest类

package com.zjc.test;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.SimpleAccountRealm;
import org.apache.shiro.subject.Subject;
import org.junit.Before;
import org.junit.Test;

public class AuthenticationTest {

    SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();

    @Before
    public void addUser(){
        simpleAccountRealm.addAccount("jiangcheng","123456");
        simpleAccountRealm.addAccount("jiangcheng1","1234567");
    }

    @Test
    public void testAuthentication(){

        //构建SecurityManager环境
        DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager();

        defaultSecurityManager.setRealm(simpleAccountRealm);

        //主体提交认证系统
        SecurityUtils.setSecurityManager(defaultSecurityManager);

        Subject subject = SecurityUtils.getSubject();

        //若账户输入出错 会出现 未知账户异常
        //org.apache.shiro.authc.UnknownAccountException:
        // Realm [org.apache.shiro.realm.SimpleAccountRealm@7a92922]
        // was unable to find account data for the submitted AuthenticationToken
        // [org.apache.shiro.authc.UsernamePasswordToken - jiangcheng1, rememberMe=false].

        //若密码输入出错 会出现 不正确的凭证异常
        // org.apache.shiro.authc.IncorrectCredentialsException:
        // Submitted credentials for token
        // [org.apache.shiro.authc.UsernamePasswordToken - jiangcheng, rememberMe=false]
        // did not match the expected credentials.

        UsernamePasswordToken token = new UsernamePasswordToken("jiangcheng1","1234567");

        //登陆
        subject.login(token);

        //验证是否成功
        System.out.println("isAuthenticated:"+subject.isAuthenticated());

        //登出
        subject.logout();

        System.out.println("isAuthenticated:"+subject.isAuthenticated());
    }
}

相关文章

网友评论

      本文标题:Shiro学习(一) Shiro认证

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