作为企业常用的安全框架,shiro以使用简单赢得了大量拥簇,下面提供一个简单的入门案例,供大家参考。
1、新建java项目,导入jar包,build-path添加junit lib:
2、新增文件夹config,以及log4j属性文件:
log4j.rootLogger=debug, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m %n
3、在config中新增shiro-first.ini文件,内容如下:
#对用户信息进行配置
[users]
#用户名、密码
zhangsan=111111
lisi=22222
4、新建认证测试类:
package com.js.authentication;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
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;
/**
* 认证测试
* @author jiangs
*
*/
public class AuthenticationTest {
@Test
//用户登录和测试
public void testLoginAndLogout() {
//创建securityManager工厂
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro-first.ini");
//创建SecurityManager
SecurityManager securityManager = factory.getInstance();
//将securityManager设置到当前的运行环境中
SecurityUtils.setSecurityManager(securityManager);
//模拟一个subject,从SecurityUtils来创建
Subject subject = SecurityUtils.getSubject();
//在认证提交前需要准备token(令牌)
UsernamePasswordToken token = new UsernamePasswordToken("zhangsanddd","111111");
//执行认证的提交subject.login()
try {
subject.login(token);
} catch (AuthenticationException e) {
e.printStackTrace();
}
//是否认证通过
boolean isAuthenticated = subject.isAuthenticated();
System.out.println("是否认证通过:"+isAuthenticated);
//退出操作
subject.logout();
//是否认证通过
isAuthenticated = subject.isAuthenticated();
System.out.println("是否认证通过:"+isAuthenticated);
}
}
5、运行单元测试。