創(chuàng)建Spring Boot的Maven項(xiàng)目
??利用 Spring Boot 可以簡化開發(fā)環(huán)境的搭建,特別是對(duì)于一些新知識(shí)點(diǎn)的學(xué)習(xí),保證學(xué)習(xí)的時(shí)候不被環(huán)境及其它無關(guān)操作所影響.Spring Security項(xiàng)目官網(wǎng)上為 Security 項(xiàng)目官方提供了Demo ,但 Download 下來之后發(fā)現(xiàn)有些問題,并不能夠直接運(yùn)行,造成這樣的原因是POM 中有些錯(cuò)誤.所以我們可以自己創(chuàng)建一個(gè)簡單的 Maven 項(xiàng)目,對(duì)其做加法,把需要的依賴,一個(gè)一個(gè)的添加
添加項(xiàng)目依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
添加視解析器
??之所以把視圖解析器單獨(dú)解釋,是因?yàn)?Spring Boot 中的默認(rèn)視力解析器是
thymeleaf,所說 thymeleaf 有很多好處,但我沒有具體了解過.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity4</artifactId>
</dependency>
修改配置文件
??Spring Boot為我們的項(xiàng)目默認(rèn)設(shè)置了許多配置,當(dāng)我們需要修改的時(shí)候,我們只需要按其要求添加配置文件,并把需要修改的內(nèi)容寫入配置文件就行.下面我們采用屬性文件修改配置的方式,把項(xiàng)目的發(fā)布路徑修改一下.在資源文件包下面添加屬性文件 application.properties,并修改其內(nèi)容.
server.context-path=/sec
??只需要加入一句就可以了,這樣我們?cè)L問程序的時(shí)候就不是localhost:8080/,而是需要在最后一個(gè)根號(hào)后面加入sec,多個(gè)項(xiàng)目同時(shí)支行的時(shí)候方便區(qū)分.采用屬性文件的原因是我不懂官方中采用的<code>yml</code>形式的配置_所以我把<code>application.yml</code>這個(gè)配置文件給去了.
導(dǎo)入Spring官方代碼
?? Securyit 的官方Demo,下載之后解壓就可以得到源碼,方便我們把官方源碼導(dǎo)入到項(xiàng)目中,具體路徑在 SPRING_SECURITY_HOME/samples/boot/helloworld 下.
導(dǎo)入Security的配置代碼
??如果我們不導(dǎo)入這個(gè)配置文件,那么Spring下面的兩個(gè)類已經(jīng)為我們提供了默認(rèn)的配置,兩個(gè)類他別是
org.springframework.boot.autoconfigure.security.SecurityProperties 和org.springframework.boot.autoconfigure.security.SpringBootWebSecurityConfiguration,但是這兩個(gè)類都在Spring Boot下面,若項(xiàng)目不是采用Spring Boot的,那么就沒有作用.若我們沒有自定義 Security 的配置文件,那么程序運(yùn)行的時(shí)候默認(rèn)采用的用戶名就是 user ,密碼在Spring Boot 程序運(yùn)行的時(shí)候顯示在控制臺(tái).Security的配置代碼如:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/css/**", "/index").permitAll()
// user下面的資源需要擁有"USER"角色方可訪問
.antMatchers("/user/**").hasRole("USER")
.and()
.formLogin()
.loginPage("/login")
.failureUrl("/login-error");
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
??可以在這個(gè)配置文件中自定義安全配置,如用戶名和資源文件 etc,同時(shí)在這個(gè)地方對(duì)不同的資源或角色進(jìn)行授權(quán)操作.
結(jié)果
??把官方Demo中的代碼導(dǎo)入之后,IDE中顯示如圖所示.