Shiro认证
1.1 认证过程
1.2 源码讲解
创建maven项目
<groupId>com.amoscxy</groupId>
<artifactId>amoscxy_shiro</artifactId>
<version>1.0-SNAPSHOT</version>
新建module,名为shiro-test
在shiro-test的pom.xml中引入shiro核心包和junit单元测试包
<!--shiro核心包-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.4.0</version>
</dependency>
<!--junit单元测试包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
在test.java下面新建package:com.amoscxy.test
创建测试类测试认证:AuthenticationTest:
package com.amoscxy.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;
/**
* Created by cxy on 2018/9/18.
*/
public class AuthenticationTest {
SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();
@Before
public void addUser(){
simpleAccountRealm.addAccount("Mark","123456");
}
@Test
public void testAuthentication(){
//1.构建SecurityManager认证环境
DefaultSecurityManager defaultSecurityManager= new DefaultSecurityManager();
defaultSecurityManager.setRealm(simpleAccountRealm);
//2.主体提交认证请求subject.isAuthenticated()
SecurityUtils.setSecurityManager(defaultSecurityManager);
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken("Mark","123456");
//登陆
subject.login(token);
//subject.isAuthenticated():是否认证
System.out.println("isAuthenticated:" + subject.isAuthenticated());
//退出
subject.logout();
//subject.isAuthenticated():是否认证
System.out.println("isAuthenticated:" + subject.isAuthenticated());
}
}