1、创建简单的javaSE项目:
2、复制jar包:
3、Build Path:
4、shiro.ini:
5、java代码:
package day01;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;
public class Demo {
public static void main(String[] args) {
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
Subject currentUser = SecurityUtils.getSubject();
Session session = currentUser.getSession();
session.setAttribute("someKey", "aValue");
String value = (String) session.getAttribute("someKey");
if (value.equals("aValue")) {
System.out.println("someKey 的值:" + value);
}
// 登陆
UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "zhangsan");
token.setRememberMe(true);
try {
System.out.println(token);
currentUser.login(token);
} catch (UnknownAccountException uae) {
System.out.println("用户名不存在:" + token.getPrincipal());
} catch (IncorrectCredentialsException ice) {
System.out.println("账户密码 " + token.getPrincipal() + " 不正确!");
} catch (LockedAccountException lae) {
System.out.println("用户名 " + token.getPrincipal() + " 被锁定 !");
}
// 认证成功后
if (currentUser.isAuthenticated()) {
System.out.println("用户 " + currentUser.getPrincipal() + " 登陆成功!");
//测试角色
System.out.println("是否拥有 manager 角色:" + currentUser.hasRole("manager"));
//测试权限
System.out.println("是否拥有 user:create 权限" + currentUser.isPermitted("user:create"));
//退出
currentUser.logout();
}
}
}
6、打印结果: