java SE shiro认证过程,javaseshiro认证
分享于 点击 465 次 点评:191
java SE shiro认证过程,javaseshiro认证
登录apache shiro官网:
http://shiro.apache.org/download.html#latestSource
下载源码包:
git clone https://github.com/apache/shiro.git
git checkout shiro-root-1.3.2 -b shiro-root-1.3.2
得到下面的文件:
使用idea导入samples
使用quickstart进行学习
shiro.ini文件介绍
[users]
用户名=密码,角色1,角色2。。。
[roles]
角色=权限
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
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;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
private static final Logger logger = LoggerFactory.getLogger(HelloWorld.class);
public static void main(String[] args) {
//1.获取权限管理器
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager securityManager = factory.getInstance();
//2.设置安全管理器
SecurityUtils.setSecurityManager(securityManager);
//3.获取subject
Subject currentUser = SecurityUtils.getSubject();
Session session = currentUser.getSession();
if(!currentUser.isAuthenticated()){
UsernamePasswordToken token = new UsernamePasswordToken("root","secret");
try {
currentUser.login(token);
logger.info("登录成功");
}catch (UnknownAccountException e){
logger.info("用户名错误");
}catch (IncorrectCredentialsException e){
logger.info("密码错误");
}catch (LockedAccountException e){
logger.info("用户locked");
}catch (AuthenticationException e){
logger.info("认证失败");
}
}
//判断用户是否拥有指定的角色
if(currentUser.hasRole("admin")){
logger.info("拥有角色");
}else{
logger.info("没有该角色");
}
//判断用户是否拥有指定的权限
if(currentUser.isPermitted("winnebago:drive:eagle5")){
logger.info("拥有该权限");
}else {
logger.info("没有该权限");
}
//退出登录
currentUser.logout();
}
}
相关文章
- 暂无相关文章
用户点评