shiro緩存更新
Ⅰ SpringBoot + Shiro (四)緩存&記住密碼
最終demo
到這節為止,我們已經實現了身份驗證和許可權驗證。但是,如果我們登錄之後多次訪問 http://localhost:8080/userInfo/userDel 的話,會發現許可權驗證會每次都執行一次。這是有問題的,因為像用戶的許可權這些我們提供給shiro一次就夠了。
下面,我們開始給shiro添加緩存支持:
在 com.example.demo.config.Shiro.ShiroConfiguration 中添加以下方法。
將緩存對象注入到 SecurityManager 中:
在src/main/resouces/config中添加ehcache-shiro.xml配置文件:
啟動項目,再多次訪問 http://localhost:8080/userInfo/userDel ,這時候只會在後台列印一次配置許可權的信息了,說明shiro緩存起了作用。
---------------------下面我們開始配置記住密碼-----------
將rememberMeManager注入到SecurityManager中
在 ShiroFilterFactoryBean 中添加記住我過濾器 user ,添加 user 過濾器的資源在記住我或認證之後就可以直接訪問了。
最後,在login.html頁面添加記住我單選框
啟動項目,正常登錄後關閉瀏覽器,再打開瀏覽器輸入 http://localhost:8080/index ,這時候就可以直接訪問index頁面,不需要再登錄了。
SpringBoot + Shiro (一)基礎工程搭建
SpringBoot + Shiro (二)身份校驗和角色設置
SpringBoot + Shiro (三)許可權
SpringBoot + Shiro (四)緩存&記住密碼
SpringBoot + Shiro (五)驗證碼
最後,感謝幾位作者的文章解惑:
springboot整合shiro-登錄認證和許可權管理
Spring Boot Shiro許可權管理【從零開始學Spring Boot】
Spring boot 中使用Shiro
最後幫朋友打個小廣告
一個有趣的迷你小程序
Ⅱ Springboot集成shiro,開啟shiro緩存,@Lazy註解貼在自定義realm中緩存會生效嗎
1.註解只是代碼的簡略寫法,所以生效不生效要看代碼有沒有被執行。
2.有沒有被執行看的是配置,掃描范圍內的註解就會被執行,跟你寫在哪兒沒有關系。
Ⅲ spring mvc 中shiro 怎麼和緩存聯合使用
正常情況是不會出現這樣的,shiro對於靜態資源的處理,不用特殊配置,只需要在shiroFilter過濾器filterChainDefinitions項中增加一個靜態資源處理規則就可以,例如允許/css/開頭的資源匿名訪問,只需要這樣一句配置就足矣, /css/** = anon 配置...
Ⅳ shiro登錄時ehcache緩存報錯
推薦一套完整的Shiro Demo,免費的。
Shiro介紹文檔:http://www.sojson.com/shiro
Demo已經部署到線上,地址是http://shiro.itboy.net,
管理員帳號:admin,密碼:sojson.com 如果密碼錯誤,請用sojson。
PS:你可以注冊自己的帳號,然後用管理員賦許可權給你自己的帳號,但是,每20分鍾會把數據初始化一次。建議自己下載源碼,讓Demo跑起來,然後跑的更快。
Ⅳ shiro更新session次數很多怎麼解決
用shiro時發現session.update等方法調用頻繁.
原因:session update大多是在更新最後訪問時間.每一次請求都會更新最後訪問時間.
當一個頁麵包含多個資源的時候就會發生多次update session.
解決方案1:
重寫session的update方法,當發現是靜態資源時,放棄update
方案2:
將SpringMVC和Shiro的url-pattern由"/"修改為"*.do",在容器層過濾掉靜態請求.
Ⅵ shiro自定的本機內存實現的cachemanager類有什麼用
在Shiro中為會話啟用Ehcache是非常容易的。首先,確保在你的classpath 中有shiro-ehcache-<version>.jar 文件。
然後,在shiro.ini中配置EHCache為所有Shiro 的緩存提供使用:
[main]
sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO
securityManager.sessionManager.sessionDAO = $sessionDAO
cacheManager = org.apache.shiro.cache.ehcache.EhcacheManager
securityManager.cacheManager = $cacheManager
最後一行,securityManager.cacheManager = $cacheManager,為所有Shiro 的組件配置了一個CacheManager。該CacheManager 實例會自動地直接傳送到SessionDAO(通過EnterpriseCacheSessionDAO 實現CacheManagerAware 介面的性質)。
然後,當SessionManager 要求EnterpriseCacheSessionDAO 去持久化一個Session 時,它使用一個EHCache 支持的Cache實現去存儲Session 數據。
EHCache Session Cache Configuration
默認地,EhCacheManager 使用一個Shiro 特定的ehcache.xml 文件來建立Session 緩存區以及確保Sessions 正常存取的必要設置。
然而,如果你想改變緩存設置,或想配置你自己的ehcache.xml 或EHCache net.sf.ehcache.CacheManager 實例,你需要配置緩存區來確保Sessions 被正確地處理。
如果你查看默認的ehcache.xml 文件,你會看到接下來的shiro-activeSessionCache 緩存配置:
Ⅶ shiro為什麼調用realm的清空緩存方法
我是在帳號驗證成功後在doGetAuthenticationInfo裡面顯式調用doGetAuthorizationInfo(SecurityUtils.getSubject().getPrincipals());即可獲取當前所有的許可權能達到和你一樣的目的,但是不曉得是不是符合規范。因為我直接使用註解
Ⅷ SpringBoot進階之整合Shiro實現緩存和會話管理
大家好,一直以來我都本著用最通俗的話理解核心的知識點, 我認為所有的難點都離不開 「基礎知識」 的鋪墊。目前正在出一個 SpringBoot 長期系列教程,從入門到進階, 篇幅會較多~
「大佬可以繞過 ~」
如果你是一路看過來的,很高興你能夠耐心看完。之前帶大家學了 Springboot 基礎部分,對基本的使用有了初步的認識, 接下來的幾期內容將會帶大家進階使用,會先講解基礎 中間件 的使用和一些場景的應用,或許這些技術你聽說過,沒看過也沒關系,我會帶大家一步一步的入門,耐心看完你一定會有 收獲 ~
上期帶大家學習了 Shiro 中如何進行許可權認證,本期將帶大家學習 Shiro 中如何進行 緩存和會話管理 ,最後我們將做一個在線用戶管理以及強制下線用戶的功能,同樣的,我們集成到 Springboot 中。
首先我們要明白使用緩存的原因,為啥要用它 還記得之前帶大家實現的 用戶認證 和 許可權認證 嗎,那裡我使用了 MockUser ,真實場景中是要去數據查詢的,這樣一來就會產生耗時,請求多的時候資料庫肯定忙不過來了,所以我們需要使用緩存來提高程序響應速度
緩存使用 Redis ,下面就帶大家整一下:
修改 ShiroConfig ,添加方法
這樣就可以了,大家可以把測試獲取用戶的地方改成資料庫獲取,看下 控制台 sql日誌會明顯減少,因為有一部分是從緩存拿的
這部分功能還是比較好玩的,學完可以自由發揮做一個房間功能,可以加入可以踢人,下面我們就開整
修改 ShiroConfig ,添加方法,因為我們使用的是 Redis 緩存
實現 SessionListener
最後同樣的,想要開啟需要我們注入到 Manager 中:
我們先定義一個類,用來記錄在線用戶:
那麼怎麼獲取呢?我們定義一個方法,大家實踐中可以抽到 Service 層,這里方便演示,我直接寫到控制器里
如果你看誰不爽,可以直接讓他下線,hhh~
是不是很簡單,這里就不演示了,大家自行試試
本期內容就到這里結束了,總結一下,本節主要講了 Shiro 如何進行緩存以及如何進行用戶會話管理,大家可以舉一反三,做一些小功能嘗試嘗試
下期給大家講講 Shiro 中如何整合 JWT ,這個大家應該不陌生,如果不知道啥是 JWT 也沒關系,我會帶大家一步一步入門,下期也是 Shiro 系列的終極篇,內容可能有點多,耐心看完哦。歡迎加群一起學習交流 ~