shiro許可權框架與spring框架輕鬆整合

2021-08-03 02:11:13 字數 2564 閱讀 8640

shiro是乙個許可權框架,用於管理**的許可權,大到**登入過濾,小到乙個選單或按鈕是否顯示,shiro學習起來非常簡單,以下是shiro的執行流程圖:

subject為當前使用者,當它訪問系統的時候,就會經過securitymanager安全管理器,安全管理器類似乙個中轉站,它實際上會讓realm類來處理使用者的認證和授權資訊,認證和授權說白了就是賬號登陸驗證和查詢使用者所具有的許可權,並將許可權封裝起來供securitymanager來管理的意思(我個人理解)。

realm主要是和資料庫打交道,相當於資料來源,由於資料來源有很多種,例如mysql,oracle,sqlserver等,所以使用系統的不行,我們要自己自定義乙個類,用來繼承realm,但通常情況下,我們繼承realm的子模擬較多,它的子類是authorizingrealm,使用方法後面會講到。

shirofilter

org.springframework.web.filter.delegatingfilterproxy

targetfilterlifecycle

true

targetbeanname

shirofilter

/*

/images/** = anon

/js/** = anon

/styles/** = anon

/validatecode.jsp = anon

/logout.action = logout

/index.jsp  = user

/first.action = user

/welcome.jsp = user

/** = authc

上面有兩個bean對應的class是需要我們自定義的,乙個是我們前面提到的驗證和授權的realm類,另乙個表單驗證的過濾器,用於驗證自定義的表單資訊,比如對驗證碼的驗證。

第三步:自定義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框架輕鬆整合

subject為當前使用者,當它訪問系統的時候,就會經過securitymanager安全管理器,安全管理器類似乙個中轉站,它實際上會讓realm類來處理使用者的認證和授權資訊,認證和授權說白了就是賬號登陸驗證和查詢使用者所具有的許可權,並將許可權封裝起來供securitymanager來管理的意思...

許可權框架 shiro 授權demo

之前說了許可權認證,其實也就是登入驗證身份 這次來說說shiro的授權 shiro可以針對角色授權,或者訪問資源授權 兩者都行,但是在如今的複雜系統中,當然使用後者,如果你是小系統或者私活的話,前者即可,甚至可以不用,我懂的 好吧,上 首先新建乙個ini,登陸資訊以及許可權配置好 1 使用者2 us...

shiro框架許可權模組細節

以前登入成功,傳的是username,現在傳employee物件 身份認證 override protected authenticationinfo dogetauthenticationinfo authenticationtoken authenticationtoken throws aut...