1、创建项目,pom.xml中<dependencies></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.1</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.2.1</version>
</dependency>
resources资源文件下创建shiro.ini,添加内容
[users]
zhangsan=666
lisi=888
创建测试类ShiroTest
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;
import org.junit.Test;
/**
* 测试shiro认证
*/
public class ShiroTest
{
/**
* Rigorous Test :-)
*/
@Test
public void testLogin() throws Exception{
//1、创建securityManager工厂对象:加载配置文件,创建工厂对象
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
// 2、通过工厂对象,创建SecurityManager对象 单例模式,有一个private的构造函数,使得不能用new来实例化对象,只能调用getInstance()保证了每次调用都返回相同的对象。
SecurityManager securityManager = factory.getInstance();
// 3、将securityManager绑定到当前运行环境中,让系统随时随地可以访问securityManager对象
SecurityUtils.setSecurityManager(securityManager);
// 4、创建当前登录的主体,注意:此时主体没有经过认证
Subject subject = SecurityUtils.getSubject();
// 5、绑定主体登录的身份凭证,即账号密码
// 参数1表示将要登录的用户名,参数2表示登录用户的密码
// 账号密码错误是分别出现不同的异常错误找不到账户异常/账号正常,密码错误异常,根据异常错误可以向前台反馈不同的数据信息,用try catch
UsernamePasswordToken token = new UsernamePasswordToken("zhangsan","666");
// 6、主题登录
try {
subject.login(token);
// 操作成功操作
} catch (Exception e) {
// 登录失败操作
}
// 7、判断登录是否成功
System.out.println("登录是否成功:" + subject.isAuthenticated());
// 8、注销登录
subject.logout();
System.out.println("登录是否成功:" + subject.isAuthenticated());
}
}