Shiro结合redis的统一会话管理:自定义会话管理器
生活随笔
收集整理的這篇文章主要介紹了
Shiro结合redis的统一会话管理:自定义会话管理器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Shiro結合redis的統一會話管理
步驟分析
構建環境
(1)使用開源組件Shiro-Redis可以方便的構建shiro與redis的整合工程。
<dependency><groupId>org.crazycake</groupId><artifactId>shiro-redis</artifactId><version>3.0.0</version> </dependency>(2) 在springboot配置文件中添加redis配置
redis:host: localhostport: 6379password: 123456自定義shiro會話管理器
package cn.learn.shiro.session;import org.apache.shiro.web.servlet.ShiroHttpServletRequest; import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; import org.apache.shiro.web.util.WebUtils; import org.springframework.util.StringUtils;import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import java.io.Serializable;/*** 自定義的sessionManager*/ public class CustomSessionManager extends DefaultWebSessionManager {/*** 頭信息中具有sessionid* 請求頭:Authorization: sessionid** 指定sessionId的獲取方式*/protected Serializable getSessionId(ServletRequest request, ServletResponse response) {//獲取請求頭Authorization中的數據String id = WebUtils.toHttp(request).getHeader("Authorization");if(StringUtils.isEmpty(id)) {//如果沒有攜帶,生成新的sessionIdreturn super.getSessionId(request,response);}else{//返回sessionId;request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE, "header");request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID, id);request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_IS_VALID, Boolean.TRUE);return id;}} }?
總結
以上是生活随笔為你收集整理的Shiro结合redis的统一会话管理:自定义会话管理器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shiro的会话管理:应用场景分析
- 下一篇: SasSHRM中基于shiro的认证授权