Web 授權(quán)與認證
實驗內(nèi)容
1. 簡述 web.xml 中 listener, filter, servlet 的作用。
listener:
IntrospectorCleanupListener:主要負責(zé)處理由JavaBean Introspector使用而引起的緩沖泄露,
ContextLoaderListener:啟動Web容器時祖秒,自動裝配ApplicationContext的配置信息
filter:
SpringEncodingFilter:解決亂碼問題氯檐,使用UTF-8編碼
shiroFilter:配置Shiro過濾器,先讓Shiro過濾系統(tǒng)接收到的請求
servlet:
SpringMVC:配置SringMVC核心分發(fā)器
2. 查閱 httpSession 和 httpCookie 的API训挡,他們是接口送浊?對象发钝?
HttpSession是接口仔蝌;HttpCookie是對象
3. 用自己的話煞额,簡述 “Check Authentication using Spring MVC and Handler Interceptor” 程序認證過程
如果輸入的用戶名和密碼和設(shè)置的properties文件中的登錄名和密碼一致悉罕,就將用戶相關(guān)信息封裝到這個請求的session的LOGGEDIN_USER屬性當(dāng)中;之后這個用戶再次登陸的時候立镶,在Handler發(fā)出之前檢測url信息壁袄,得到LOGGEDIN_USER屬性中的LoginForm,進行了認證
4. 用案例簡述 Shiro 認證與授權(quán)的過程媚媒。
根據(jù)Shiro教程中的案例嗜逻,認證過程如下:
調(diào)用 Subject.login(token)進行登錄,其會自動委托給 Security Manager,調(diào)用之前必須通過 SecurityUtils. setSecurityManager()設(shè)置
?
SecurityManager 負責(zé)真正的身份驗證邏輯;它會委托給 Authenticator 進行身份驗證;
Authenticator 才是真正的身份驗證者,Shiro API 中核心的身份認證入口點,此處可以
自定義插入自己的實現(xiàn);
Authenticator 可能會委托給相應(yīng)的 AuthenticationStrategy 進行 Realm 身份驗證;
Authenticator 會把相應(yīng)的 token 傳入 Realm,從 Realm 獲取身份驗證信息,如果沒有返回/拋出異常表示身份驗證失敗了。此處可以配置多個 Realm,將按照相應(yīng)的順序及策略
進行訪問缭召。?
?
授權(quán)過程:
在shiro.ini中有設(shè)置用戶有的角色和權(quán)限
可以自己寫權(quán)限授予部分的實現(xiàn);同樣繼承 AuthorizingRealm 抽象類,重載doGetAuthorizationInfo(),重寫獲取用戶信息栈顷。