创建Spring Boot的Maven项目
利用 Spring Boot 可以简化开发环境的搭建,特别是对于一些新知识点的学习,保证学习的时候不被环境及其它无关操作所影响.Spring Security项目官网上为 Security 项目官方提供了Demo ,但 Download 下来之后发现有些问题,并不能够直接运行,造成这样的原因是POM 中有些错误.所以我们可以自己创建一个简单的 Maven 项目,对其做加法,把需要的依赖,一个一个的添加
添加项目依赖
org.springframework.boot
spring-boot-starter-parent
1.5.3.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-security
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-maven-plugin
添加视解析器
之所以把视图解析器单独解释,是因为 Spring Boot 中的默认视力解析器是
thymeleaf,所说 thymeleaf 有很多好处,但我没有具体了解过.
org.springframework.boot
spring-boot-starter-thymeleaf
org.thymeleaf.extras
thymeleaf-extras-springsecurity4
修改配置文件
Spring Boot为我们的项目默认设置了许多配置,当我们需要修改的时候,我们只需要按其要求添加配置文件,并把需要修改的内容写入配置文件就行.下面我们采用属性文件修改配置的方式,把项目的发布路径修改一下.在资源文件包下面添加属性文件 application.properties,并修改其内容.
server.context-path=/sec
只需要加入一句就可以了,这样我们访问程序的时候就不是localhost:8080/,而是需要在最后一个根号后面加入sec,多个项目同时支行的时候方便区分.采用属性文件的原因是我不懂官方中采用的yml
形式的配置_所以我把application.yml
这个配置文件给去了.
导入Spring官方代码
Securyit 的官方Demo,下载之后解压就可以得到源码,方便我们把官方源码导入到项目中,具体路径在 SPRING_SECURITY_HOME/samples/boot/helloworld 下.
导入Security的配置代码
如果我们不导入这个配置文件,那么Spring下面的两个类已经为我们提供了默认的配置,两个类他别是
org.springframework.boot.autoconfigure.security.SecurityProperties 和org.springframework.boot.autoconfigure.security.SpringBootWebSecurityConfiguration,但是这两个类都在Spring Boot下面,若项目不是采用Spring Boot的,那么就没有作用.若我们没有自定义 Security 的配置文件,那么程序运行的时候默认采用的用户名就是 user ,密码在Spring Boot 程序运行的时候显示在控制台.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");
}
}
可以在这个配置文件中自定义安全配置,如用户名和资源文件 etc,同时在这个地方对不同的资源或角色进行授权操作.
结果
把官方Demo中的代码导入之后,IDE中显示如图所示.