最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot + Shiro前后端分離權(quán)限

 更新時間:2020年03月20日 17:22:38   作者:無關(guān)風(fēng)月u  
這篇文章主要為大家詳細(xì)介紹了SpringBoot + Shiro前后端分離權(quán)限,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

shiro 驗證通過后的信息保存在session 中,而ajax 每次傳的都是不同的sessionid ,所以主要的區(qū)別就是需要修改shiro獲取sessionid的方式。這里使用的是登錄后將后臺的sessionid 傳到前端然后存放到 cookie(這個存放的地方視情況而定),然后每次請求后端時在Header中攜帶此信息,這里起名為Authorization

shiro 中 默認(rèn)獲取Sessionid的類是 DefaultWebSessionManager 所以需要重寫此類

import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.web.servlet.ShiroHttpServletRequest;
import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
import org.apache.shiro.web.util.WebUtils;
 
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.Serializable;
 
public class PowerShiroSessionManager extends DefaultWebSessionManager {
 
 /**
 * 獲取請求頭中key為“Authorization”的value == sessionId
 */
 private static final String AUTHORIZATION ="Authorization";
 
 private static final String REFERENCED_SESSION_ID_SOURCE = "cookie";
 
 
 @Override
 protected Serializable getSessionId(ServletRequest request, ServletResponse response) {
 // TODO Auto-generated method stub
 String sessionId = WebUtils.toHttp(request).getHeader(AUTHORIZATION);
 System.out.println(sessionId);
 if (StringUtils.isNotEmpty(sessionId)) {
 request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE, ShiroHttpServletRequest.COOKIE_SESSION_ID_SOURCE);
 request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID, sessionId);
 request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_IS_VALID, Boolean.TRUE);
 return sessionId;
 }
 return super.getSessionId(request, response);
 }
}

然后在配置中配置此類

@Bean
 public SessionManager sessionManager() {
 PowerShiroSessionManager shiroSessionManager = new PowerShiroSessionManager();
 return shiroSessionManager;
 }
 @Bean
 public SecurityManager securityManager(){
 DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
 securityManager.setRealm(myShiroRealm());
 //自定義session管理
 securityManager.setSessionManager(sessionManager());
 return securityManager;
 }

然后修改前端,這里前端使用的時Vue.js,登錄成功后將SessionId保存到cookie中,并將請求中攜帶頭信息

util.setCookie("SESSIONID",data.data.sessionId,1);
axios.defaults.headers.common['Authorization'] = util.getCookie("SESSIONID");

這樣后端就能根據(jù)這個sessionid判斷出用戶是否通過認(rèn)證

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

阳谷县| 云林县| 通州区| 井研县| 平阴县| 肇州县| 什邡市| 碌曲县| 安康市| 恭城| 韩城市| 奎屯市| 徐水县| 兴海县| 八宿县| 曲周县| 闽清县| 荥阳市| 广安市| 兴化市| 凤冈县| 沾益县| 观塘区| 麻栗坡县| 泉州市| 女性| 石柱| 资源县| 石景山区| 中山市| 城口县| 保德县| 郧西县| 临沭县| 临颍县| 监利县| 湾仔区| 洛阳市| 兰州市| 宁陕县| 屯留县|