1.概述
a) 特性
以下是Spring Security 4.0的新特性
- Web Socket 支持
- 測試支持
- 整合Spring Data
- CSRF令牌參數解析
- 更安全的默認設置
- role權限不再必須使用ROLE_前綴,在之前的版本必須像下面這樣在XML文件里進行配置:
<intercept-url pattern="/**" access="hasRole('ROLE_USER')"/>
現在,我們可以選擇省略掉ROLE_前綴。具體而言,無論ROLE_是否存在,表達式hasRole已經定義了一個作為role的值。我們可以像下面這樣配置(效果和之前一樣):
<intercept-url pattern="/**" access="hasRole('USER')"/>
類似的,也可以像下面一樣配置:
@PreAuthorize("hasRole('ROLE_USER')")
@PreAuthorize("hasRole('USER')")
- 添加了更多集成的Tests示例
- 不贊成使用 @EnableWebMvcSecurity 。在更新后的最低Spring版本,我們仍然可以使用它,但同時也允許重寫它。
b) 從3.x過渡到4.x
作為一個新版本,Spring Security團隊做了主要的更新:
以下是更新的完整詳情,或者在JIRA中查看變動:
- Migrating from Spring Security 3.x to 4.x (XML Configuration)
- Migrating from Spring Security 3.x to 4.x (Java Configuration)
2.XML配置的變化(Java注解的更新也差不多)
a)例子遷移
可以在github上查看
b)更新到Spring 4.1.x
Spring Security 4需要Spring 4。而Spring Security 3.2.x 可以在Spring 3.2.x and Spring 4上運作。
詳細介紹參見
c)過時
以下列出了一些官方不再建議使用的配置,詳情可以參考這里:
- Related Links
- spring-security-acl
- spring-security-cas
- spring-security-config
- spring-security-core
- spring-security-taglibs
- spring-security-web
d)更新Spring Security
Maven:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-bom</artifactId> <version>4.0.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
不要忘記更新依賴
<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>4.0.0.RELEASE</version> </dependency>
e)默認命名空間的改變
詳情參考這里:
- Related Links
- Migrate <http>
- Migrating <form-login>
- Migrating <logout>
- Migrating <openid-login>
- Migrating <headers>
- Migrating <csrf>
- Migrating <remember-me>
- Migrating <filter-security-metadata-source>
f)默認Filter URLs的改變
g)配置頭的改變
h)自動的ROLE_前綴