package cn.zz;
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;
/**
* 测试
*/
public class ShiroTest {
@Test
public void testLogin(){
//1创建securitManager工厂对象:加载配置文件
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
//2创建SecurityManager对象
SecurityManager instance = factory.getInstance();
//3将SecurityManager绑定到当前运行环境中,让系统随时可以访问到SecurityManager对象
SecurityUtils.setSecurityManager(instance);
//4获取当前登陆的主体 注意:此时主体没有经过认证
Subject subject = SecurityUtils.getSubject();
//5绑定主体登陆的身份/凭证,即帐号密码
//参数1 :帐号 参数2 :密码
/**异常:
* 帐号错误会报 UnknownAccountException
* 密码错误会报 IncorrectCredentialException
*/
UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "666");
//6主体登陆
try {
subject.login(token);
System.err.println("登陆成功");
}catch (Exception e){
System.err.println("登陆失败");
e.printStackTrace();
}
//7判断是否登陆成功 打印 true
System.err.println("验证是否--登陆成功"+subject.isAuthenticated());
//8登出 打印 false
subject.logout();
System.err.println("验证是否--登陆成功"+subject.isAuthenticated());
}
}

|