⑴ 集成shiro 什麼情況下會session丟失
技術分析:
1、首先如果登錄成功,Shiro的DefaultWebSessionManager會默認通過如下方式添加JSESSIONID Cookie到響應:
查看復制到剪貼板列印
private void storeSessionId(Serializable currentId, HttpServletRequest request, HttpServletResponse response) {
if (currentId == null) {
String msg = "sessionId cannot be null when persisting for subsequent requests.";
throw new IllegalArgumentException(msg);
}
Cookie template = getSessionIdCookie(); //此處得到JSESSIONID的一個cookie模板
Cookie cookie = new SimpleCookie(template);
String idString = currentId.toString();
cookie.setValue(idString);
cookie.saveTo(request, response);
log.trace("Set session ID cookie for session with id {}", idString);
}
2、如果客戶端訪問時會帶著個Cookie回來;但是注意:容器不認識的(Web容器並沒有真正創建HttpSession);Shiro默認情況下會生成自己的一套Session,默認是MemorySessionDAO;即放到內存中的;和Web容器沒有任何關系;
3、 接著訪問一個錯誤的頁面(如jsp);此時到了Shiro過濾器,過濾器通過;然後最後forward到這個錯誤頁面;大家應該知道默認情況下jsp頁面是需要session的;所以此時jsp會調用request.getSession() 此時創建了一個Session;這會往Cookie寫JSESSIONID的;
⑵ shiro框架cookies被禁怎麼處理
那隻能帶著口令或者Sessionid走了,是一個意思。
推薦一套完整的Shiro Demo,免費的。
Shiro介紹文檔內:http://www.sojson.com/shiro
Demo已經部署到線上,地址是http://shiro.itboy.net,
管理員帳號:admin,密碼:sojson.com 如果密碼錯誤,請用sojson。
PS:你可以注冊自己的帳號,然後用管理員賦許可權給你自己的帳號,但是,容每20分鍾會把數據初始化一次。建議自己下載源碼,讓Demo跑起來,然後跑的更快。
⑶ shiro記住我cookie無法添加 按照網上的說法 把配置文件中所有的配置都寫了 javabea
ie11下查看cookie:自1:IE11=》F12打開開發人員工具2:開發人員工具=》網路F5啟用網路流量捕獲3:IE11=》輸入和訪問相關網址4:開發人員工具=》網路=》詳細信息=》Cookie如果你只在java後台寫的cookie,前端瀏覽器當然看不到
⑷ shiro 自定義cookie超時時間怎麼弄
默認是HttpOnly的,即瀏覽器關閉便失效。
如果你想要修改Cookie,那麼請參考如下配置
@Bean
def securityManager() {
def securityManager = new DefaultWebSecurityManager()
securityManager.realm = realm()
securityManager.cacheManager = cacheManager()
securityManager.sessionManager = sessionManager()
securityManager.rememberMeManager = rememberMeManager()
return securityManager
}
def sessionManager() {
def sessionManager = new DefaultWebSessionManager()
def cookie = new SimpleCookie(ShiroHttpSession.DEFAULT_SESSION_ID_NAME)
//cookie.setHttpOnly(true)
cookie.maxAge = 24 * 60 * 60
sessionManager.sessionIdCookie = cookie
return sessionManager
}
def rememberMeManager() {
def rememberMeManager = new CookieRememberMeManager()
def cookie = new SimpleCookie(CookieRememberMeManager.DEFAULT_REMEMBER_ME_COOKIE_NAME)
//cookie.setHttpOnly(true)
//cookie.setMaxAge(Cookie.ONE_YEAR)
cookie.maxAge = 60 * 60 * 24 * 7
rememberMeManager.cookie = cookie
return rememberMeManager
}
⑸ 怎麼刪除shiro的cookie
直接獲取所有Cookie,循環刪除即可
推薦一套完整的Shiro Demo,免費的。
Shiro介紹文檔:http://www.sojson.com/shiro
Demo已經部署版到線上,地址是http://shiro.itboy.net,
管理員帳號:admin,密碼:sojson.com 如果密碼錯誤,請用sojson。
PS:你可以注冊自己的帳號,然後用管理員賦許可權給你自己的帳號,但是,權每20分鍾會把數據初始化一次。建議自己下載源碼,讓Demo跑起來,然後跑的更快。
⑹ shiro 記住密碼怎麼獲取cookie信息
你獲取也沒用,要解密,Cookie信息獲取和shiro沒關系,你用request獲取就可以了。內
推薦一套容完整的Shiro Demo,免費的。
Shiro介紹文檔:http://www.sojson.com/shiro
Demo已經部署到線上,地址是http://shiro.itboy.net,
管理員帳號:admin,密碼:sojson.com 如果密碼錯誤,請用sojson。
PS:你可以注冊自己的帳號,然後用管理員賦許可權給你自己的帳號,但是,每20分鍾會把數據初始化一次。建議自己下載源碼,讓Demo跑起來,然後跑的更快。