欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Spring Security(01)——初體驗

系統(tǒng) 1717 0


?????? 首先我們?yōu)? Spring Security 專門建立一個 Spring 的配置文件,該文件就專門用來作為 Spring Security 的配置。使用 Spring Security 我們需要引入 Spring Security NameSpace

< beans xmlns = "http://www.springframework.org/schema/beans"

? xmlns:security = "http://www.springframework.org/schema/security"

? xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

? xsi:schemaLocation = "http://www.springframework.org/schema/beans

????????? http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

????????? http://www.springframework.org/schema/security

????????? http://www.springframework.org/schema/security/spring-security-3.1.xsd" >

? ?????

</ beans >

?

?????? Spring Security 命名空間的引入可以簡化我們的開發(fā),它涵蓋了大部分 Spring Security 常用的功能。它的設計是基于框架內(nèi)大范圍的依賴的,可以被劃分為以下幾塊。

? ? Web/Http 安全:這是最復雜的部分。通過建立 filter 和相關的 service bean 來實現(xiàn)框架的認證機制。當訪問受保護的 URL 時會將用戶引入登錄界面或者是錯誤提示界面。

? ? 業(yè)務對象或者方法的安全:控制方法訪問權(quán)限的。

? ? AuthenticationManager :處理來自于框架其他部分的認證請求。

? ? AccessDecisionManager :為 Web 或方法的安全提供訪問決策。會注冊一個默認的,但是我們也可以通過普通 bean 注冊的方式使用自定義的 AccessDecisionManager

? ? AuthenticationProvider AuthenticationManager 是通過它來認證用戶的。

? ? UserDetailsService :跟 AuthenticationProvider 關系密切,用來獲取用戶信息的。

?

?????? 引入了 Spring Security NameSpace 之后我們就可以使用該命名空間下的元素來配置 Spring Security 了。首先我們來定義一個 http 元素, security 只是我們使用命名空間的一個前綴。 http 元素是用于定義 Web 相關權(quán)限控制的。

?? < security:http auto-config = "true" >

????? < security:intercept-url pattern = "/**" access = "ROLE_USER" />

?? </ security:http > ?

?

?????? 如上定義中, intercept-url 定義了一個權(quán)限控制的規(guī)則。 pattern 屬性表示我們將對哪些 url 進行權(quán)限控制,其也可以是一個正則表達式,如上的寫法表示我們將對所有的 URL 進行權(quán)限控制; access 屬性表示在請求對應的 URL 時需要什么權(quán)限,默認配置時它應該是一個以逗號分隔的角色列表,請求的用戶只需擁有其中的一個角色就能成功訪問對應的 URL 。這里的“ ROLE_USER ”表示請求的用戶應當具有 ROLE_USER 角色。“ ROLE_ ”前綴是一個提示 Spring 使用基于角色的檢查的標記。

?????? 有了權(quán)限控制的規(guī)則了后,接下來我們需要定義一個 AuthenticationManager 用于認證。我們先來看如下定義:

?? < security:authentication-manager >

????? < security:authentication-provider >

???????? < security:user-service >

??????????? < security:user name = "user" password = "user" authorities = "ROLE_USER" />

??????????? < security:user name = "admin" password = "admin" authorities = "ROLE_USER, ROLE_ADMIN" />

???????? </ security:user-service >

????? </ security:authentication-provider >

?? </ security:authentication-manager >

?

?????? authentication-manager 元素指定了一個 AuthenticationManager ,其需要一個 AuthenticationProvider (對應 authentication-provider 元素)來進行真正的認證,默認情況下 authentication-provider 對應一個 DaoAuthenticationProvider ,其需要 UserDetailsService (對應 user-service 元素)來獲取用戶信息 UserDetails (對應 user 元素)。這里我們只是簡單的使用 user 元素來定義用戶,而實際應用中這些信息通常都是需要從數(shù)據(jù)庫等地方獲取的,這個將放到后續(xù)再講。我們可以看到通過 user 元素我們可以指定 user 對應的用戶名、密碼和擁有的權(quán)限。 user-service 還支持通過 properties 文件來指定用戶信息,如:

?? < security:user-service properties = "/WEB-INF/config/users.properties" />

?????? 其中屬性文件應遵循如下格式:

username =password,grantedAuthority[,grantedAuthority][,enabled|disabled]

?????? 所以,對應上面的配置文件,我們的 users.properties 文件的內(nèi)容應該如下所示:

# username =password,grantedAuthority[,grantedAuthority][,enabled|disabled]

user= user,ROLE_USER

admin= admin ,ROLE_USER,ROLE_ADMIN

?

?????? 至此,我們的 Spring Security 配置文件的配置就完成了。完整配置文件將如下所示。

< beans xmlns = "http://www.springframework.org/schema/beans"

? xmlns:security = "http://www.springframework.org/schema/security"

? xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"

? xsi:schemaLocation = "http://www.springframework.org/schema/beans

????????? http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

????????? http://www.springframework.org/schema/security

????????? http://www.springframework.org/schema/security/spring-security-3.1.xsd" >

?

?? < security:http auto-config = "true" >

????? < security:intercept-url pattern = "/**" access = "ROLE_USER" />

?? </ security:http > ????

??

?? < security:authentication-manager >

????? < security:authentication-provider >

???????? < security:user-service >

??????????? < security:user name = "user" password = "user" authorities = "ROLE_USER" />

??????????? < security:user name = "admin" password = "admin" authorities = "ROLE_USER, ROLE_ADMIN" />

???????? </ security:user-service >

????? </ security:authentication-provider >

?? </ security:authentication-manager >

?? ????

</ beans >

?

?????? 之后我們告訴 Spring 加載這個配置文件。通常,我們可以在 web.xml 文件中通過 context-param 把它指定為 Spring 的初始配置文件,也可以在對應 Spring 的初始配置文件中引入它。這里我們采用前者。

?? < context-param >

????? < param-name > contextConfigLocation </ param-name >

?? < param-value > /WEB-INF/ config /applicationContext.xml,/WEB-INF/ config /spring-security.xml </ param-value >

?? </ context-param >

??

?? < listener >

?? < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >

?? </ listener >

?

?????? Spring 的配置文件是通過對應的 ContextLoaderListener 來加載和初始化的,上述代碼中的 applicationContext.xml 文件就是對應的 Spring 的配置文件,如果沒有可以不用配置。接下來我們還需要在 web.xml 中定義一個 filter 用來攔截需要交給 Spring Security 處理的請求,需要注意的是該 filter 一定要定義在其它如 SpringMVC 等攔截請求之前。這里我們將攔截所有的請求,具體做法如下所示:

?? < filter >

????? < filter-name > springSecurityFilterChain </ filter-name >

?? ? < filter-class > org.springframework.web.filter.DelegatingFilterProxy </ filter-class >

?? </ filter >

?? < filter-mapping >

????? < filter-name > springSecurityFilterChain </ filter-name >

????? < url-pattern > /* </ url-pattern >

?? </ filter-mapping >

?

?????? 接下來可以啟動我們的應用,然后在瀏覽器中訪問我們的主頁。你會看到如下頁面。


Spring Security(01)——初體驗
?

?

?????? 因為我們的 spring-security.xml 文件中配置好了所有的請求都需要“ ROLE_USER ”權(quán)限,所以當我們在請求主頁的時候, Spring Security 發(fā)現(xiàn)我們還沒有登錄, Spring 會引導我們到登錄界面。使用正確的用戶名和密碼(如上面配置的 user/user admin/admin )登錄后,如果符合對應的權(quán)限我們就可以訪問主頁了,否則將出現(xiàn) 403 (禁止訪問)界面。

?????? 可能你會奇怪,我們沒有建立上面的登錄頁面,為什么 Spring Security 會跳到上面的登錄頁面呢?這是我們設置 http auto-config=”true” Spring Security 自動為我們生成的。

?????? 當指定 http 元素的 auto-config=”true” 時,就相當于如下內(nèi)容的簡寫。

?? < security:http >

????? < security:form-login />

????? < security:http-basic />

????? < security:logout />

?? </ security:http >

?????? 這些元素負責建立表單登錄、基本的認證和登出處理。它們都可以通過指定對應的屬性來改變它們的行為。

?

?

(注:本文是基于 Spring Security3.1.6 所寫)

(注:原創(chuàng)文章,轉(zhuǎn)載請注明出處。原文地址: http://haohaoxuexi.iteye.com/blog/2154299

Spring Security(01)——初體驗


更多文章、技術(shù)交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成在线观看免费视频 | 国产一级特黄aa大片免费 | 色香首页 | 日韩深夜福利视频 | 欧洲午夜视频 | 色偷偷精品视频在线播放放 | 欧美全黄| 成人免费看黄网站yyy456 | 国产精品久久嫩一区二区免费 | 精品视频一区二区三区在线播放 | 国产亚洲精品影视在线 | 一级福利| 欧美系列在线播放 | 久久精品道一区二区三区 | 三级成人在线 | 91福利精品老师国产自产在线 | 亚洲乱人伦在线 | 亚洲精品国产电影 | 久久91久久91精品免费观看 | 视频成人永久免费视频 | 久久精品视频5 | 成人国产网站 | 国产乱人乱精一区二区视频密 | 超级碰在线视频 | 日韩国产欧美在线观看 | 91高清在线观看 | 日本一区二区三区免费高清在线 | 亚洲精品人成网线在线 | 亚洲精品国产精品国自产观看 | 久久国产精品久久久久久久久久 | 国产一区二 | 精品国产AV色一区二区深夜久久 | www.91在线观看| 久久福利电影 | h视频在线免费 | 国产91精品黄网在线观看 | 欧美日韩国产一区二区三区 | 日韩成人免费av | 91高清免费| 久一久久 | 亚洲天天干 |