Apache Shiro 做用户权限管理非常流行的一款框架:下面先进入实战
1、引入jar:
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.5.0</version>
</dependency>
2、一种登录的思路,核心实例代码:
@Override
public void doLogin(String userName, String clientId){
logger.info("----doLogin---start--进行shiro登录userName={},clientId={}",userName,clientId);
String sessionId = redisUtil.getString(Constant.SESSION_ID_USER_PREFIX+clientId);
if(null != sessionId && null != redisTemplate.opsForValue().get(sessionId)){
Session session = (Session) redisTemplate.opsForValue().get(sessionId);
if(null !=session){
logger.info("Session信息存在无须重复登录clientId={},sessionId={}",clientId,sessionId);
return;
}
}
Subject userSubject=SecurityUtils.getSubject();//取得用户唯一userSubject
AuthenticationToken shiroToken=new UsernamePasswordToken(userName,clientId);//存储信息
subject.login(shiroToken);//shiro登录
logger.info("当前登录用户userName={},clientId={},sessionId={}",userName,clientId,subject.getSession().getId());
if (!redisUtil.setString(Constant.SESSION_ID_USER_PREFIX+clientId,userSubject.getSession().getId().toString(),Constant.SESSION_ID_USER_EXPIRE_TIME)){
throw new LogicException("登录失败:缓存异常");
}
logger.info("----doLogin---end--进行shiro权限登录");
}
//核心登录源码
Subject userSubject=SecurityUtils.getSubject();//取得用户唯一userSubject
AuthenticationToken shiroToken=new UsernamePasswordToken(userName,clientId);//存储信息
subject.login(shiroToken);//shiro登录
这篇和大家分析使用,下一篇和大家分析Shiro登录的源码和原理,敬请期待!
本文介绍如何使用Apache Shiro框架进行用户权限管理,包括引入依赖、登录流程及核心代码实现。通过实战演示,深入理解Shiro的登录机制。
&spm=1001.2101.3001.5002&articleId=108573873&d=1&t=3&u=0c2e2cd6ab604a2e9dd6c567f4ef9c95)
1972

被折叠的 条评论
为什么被折叠?



