subject為當前使用者,當它訪問系統的時候,就會經過securitymanager安全管理器,安全管理器類似乙個中轉站,它實際上會讓realm類來處理使用者的認證和授權資訊,認證和授權說白了就是賬號登陸驗證和查詢使用者所具有的許可權,並將許可權封裝起來供securitymanager來管理的意思(我個人理解)。
realm主要是和資料庫打交道,相當於資料來源,由於資料來源有很多種,例如mysql,oracle,sqlserver等,所以使用系統的不行,我們要自己自定義乙個類,用來繼承realm,但通常情況下,我們繼承realm的子模擬較多,它的子類是authorizingrealm,使用方法後面會講到。
shirofilter
org.springframework.web.filter.delegatingfilterproxy
targetfilterlifecycle
true
targetbeanname
shirofilter
/*
/images/** = anon上面有兩個bean對應的class是需要我們自定義的,乙個是我們前面提到的驗證和授權的realm類,另乙個表單驗證的過濾器,用於驗證自定義的表單資訊,比如對驗證碼的驗證。/js/** = anon
/styles/** = anon
/validatecode.jsp = anon
/logout.action = logout
/index.jsp = user
/first.action = user
/welcome.jsp = user
/** = authc
第三步:自定義realm,這是這個spring和shiro整合中最重要的一環,主要是從資料庫中查詢相關資訊儲存到shhiro框架中,用於後期框架的自動許可權認證和授權,裡面的方法不太詳細,只能告訴你們大致流程是這樣的。
public class customrealm extends authorizingrealm
@override //用於使用者認證
protected authenticationinfo dogetauthenticationinfo(
authenticationtoken token) throws authenticationexception
// 用於授權
@override
protected authorizationinfo dogetauthorizationinfo(
principalcollection principals)
//清除快取
public void clearcached()
}
第四步:表單驗證碼驗證
} //此方法不處理登陸成功(認證成功),shiro認證成功會自動跳轉到上乙個請求路徑
//登陸失敗還到login頁面
return "login";
}
第七步:由於上面的自定義realm中有乙個清理快取的方法,主要是用於當使用者許可權更改時,能迫使使用者馬上下線,防止使用者因為session問題而一直處於登入狀態,我們做乙個清理快取的action方法:
@controller
public class clearshirocache
}
寫到這裡,完畢。
補充,shiro框架登入controller層**,這樣就會進入到realm裡面了:
public string dologin(loginform form, redirectattributes attr) catch (authenticationexception e)
if (subject.isauthenticated())
return "redirect:/login";
}
shiro許可權框架與spring框架輕鬆整合
shiro是乙個許可權框架,用於管理 的許可權,大到 登入過濾,小到乙個選單或按鈕是否顯示,shiro學習起來非常簡單,以下是shiro的執行流程圖 subject為當前使用者,當它訪問系統的時候,就會經過securitymanager安全管理器,安全管理器類似乙個中轉站,它實際上會讓realm類來...
許可權框架 shiro 授權demo
之前說了許可權認證,其實也就是登入驗證身份 這次來說說shiro的授權 shiro可以針對角色授權,或者訪問資源授權 兩者都行,但是在如今的複雜系統中,當然使用後者,如果你是小系統或者私活的話,前者即可,甚至可以不用,我懂的 好吧,上 首先新建乙個ini,登陸資訊以及許可權配置好 1 使用者2 us...
shiro框架許可權模組細節
以前登入成功,傳的是username,現在傳employee物件 身份認證 override protected authenticationinfo dogetauthenticationinfo authenticationtoken authenticationtoken throws aut...