項目中最近開發用到了shiro,你看了可能會解決剛接觸這塊知識不清楚如何下手 。shiro作為一款輕量級的權限管理框架,在項目中主要想管理用戶的登陸之后的頁面訪問,按鈕,數據的顯示。主要借用了shiro自己的頁面權限標簽。
當用戶登錄時-》先經過自己的一些過濾器 ,首先攔截登陸url在controller層 :
spring-shiro.xml配置如下:
下面是對應的登陸驗證入口:
/**
* 登錄頁
*/
@RequestMapping("/login")
public String login() {
String msg="login";
Subject subject = SecurityUtils.getSubject();
if (subject.isAuthenticated()) {
msg="redirect:/welcome";
}
return msg;
}
------------
邏輯介紹:subject.isAuthenticated() 判斷用戶是否通過驗證 isAuthenticated() 獲得用戶信息封裝成token 經過繼承 AuthorizingRealm 實現兩個方法 為當前登錄的Subject授予角色和權限doGetAuthorizationInfo()
驗證當前登錄的Subject(doGetAuthenticationInfo)
經過 doGetAuthenticationInfo 方法 查詢數據庫判斷token 成功或失敗,成功則進入下一個過濾器 繼承 FormAuthenticationFilter 我這里主要實現了 executeLogin() onLoginSuccess() onLoginFailure()doCaptchaValidate() 四個方法
(1)onLoginSuccess()方法則是驗證通過 則執行 msg="redirect:/welcome"; 跳轉到歡迎界面,
(2)onLoginFailure()方法則是驗證不通過 執行 msg="login"; 跳轉到登陸頁面。
(3) executeLogin() doCaptchaValidate()這兩個方法是頁面驗證碼如果用戶信息驗證三次失敗之后,進入驗證碼驗證。防止惡意攻擊。
接下來則是用戶信息驗證通過之后進入doGetAuthorizationInfo()方法進行用戶角色權限的緩存,緩存用戶頁面權限標簽。決定用戶在頁面看到的內容。
至於其他的關於shiro與spring的配置文件大同小異。具體的項目需要具體設置。總的來說shiro對於用戶權限的管理還是挺不錯的,上手較快。