Apache Shiro是Java的一个安全(权限)框架
主要功能:认证、授权、加密、会话管理(让Java se中也可以使用session)、与web集成、缓存
Shiro的结构:
获取session:
登录:
判断用户是否有某一个角色:
注销
主要功能:认证、授权、加密、会话管理(让Java se中也可以使用session)、与web集成、缓存
Shiro的结构:
application code-----> Subject(门面)------>Shiro SecurityManager(核心)--------->Realm(相当于dao、存放用户信息、权限等等数据)
Shiro使用demo:
需要的jar包:– shiro-all-1.3.2.jar – log4j-1.2.15.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
首先获取Shiro的入口 subject
Subject currentUser = SecurityUtils.getSubject();
获取session:
Session session = currentUser.getSession();
判断用户是否已经被认证(是否登录):
currentUser .isAuthenticated(); // 返回true or false
登录:
UsernamePasswordToken token = new UsernamePasswordToken ("zhangsan","123456");
token.setRememberMe(true); //记住我
try{
currentUser.login(token);
}catch(UnknowAccountException uae){
System.out.println("用户名不存在异常.......");
}catch(IncorrectCredentialsException ice){
System.out.println("密码不匹配异常.......");
}catch(LockedAccountException lae){
System.out.println("用户被锁定异常.......");
}catch(AuthenticationException ae){
System.out.println("所有认证时异常的父类.......");
}
判断用户是否有某一个角色:
currentUser.hasRole("admin"); //返回true or false
currentUser.isPermitted("user:delete"); //是否具有 对user进行删除操作
currentUser.isPermitted("user:delete:zhangsan");//是否具有 对user中的zhangsan进行删除操作
注销
currentUser.logout();