开启安全管理效果测试
在Spring Boot项目中开启Spring Security的方式非常简单,只需要引入spring-boot-starter-security启动器即可。下面,在项目中引入安全管理依赖,开启项目的安全管理并进行测试。
1.添加spring-boot-starter-security启动器
在项目的pom.xml文件中引入Spring Security安全框架的依赖启动器spring-boot-starter-security,示例代码如下。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
上述引入的依赖spring-boot-starter-security就是Spring Boot整合Spring Security安全框架而提供的依赖启动器,其版本号由Spring Boot进行统一管理,在当前Spring Boot版本下,对应的Spring Security框架对应的版本号为5.1.4。
需要说明的是,一旦项目引入spring-boot-starter-security启动器,MVC Security和WebFlux Security负责的安全功能都会立即生效(WebFlux Security生效的另一个前提是项目属于WebFlux Web项目);对于OAuth2安全管理功能来说,则还需要额外引入一些其他安全依赖。
2.项目启动测试
启动chapter07项目进行效果测试,仔细查看控制台打印信息,如图1所示。
图1 添加spring-boot-starter-security后项目启动效果
从图1可以看出,项目启动时会在控制台Console中自动生成一个安全密码(security password,这个密码在每次启动项目时都是随机生成的)。
通过浏览器访问“http://localhost:8080/
”查看项目首页,效果如图2所示。
图2 项目首页访问效果
从2可以看出,执行“http://localhost:8080/
”访问项目首页,自动跳转到了一个新的登录链接页面“http://localhost:8080/login
”,这说明在项目中添加spring-boot-starter-security依赖启动器后,项目实现了Spring Security的自动化配置,并且具有了一些默认的安全管理功能。另外,项目中并没有手动创建用户登录页面,而添加了Security依赖后,Spring Security会自带一个默认的登录页面。
在图2所示的登录页面随意输入一个错误的用户名和密码,会出现错误提示,效果如图3所示。
图3 项目登录错误效果
从图3可以看出,当在Spring Security提供的默认登录页面“/login”中输入错误登录信息后,会重定向到“/login?error”页面并显示出错误信息“用户名或密码错误(Bad credentials)”。
需要说明的是,在Spring Boot项目中加入spring-boot-starter-security依赖启动器后,Security会默认提供一个可登录的用户信息,其中用户名为user,密码随机生成,这个密码会随着项目的每次启动随机生成并打印在控制台上。
下面,在登录页面输入用户名和密码,效果如图4所示。
图4 项目登录成功效果
从图4可以看出,在Spring Security提供的登录页面“/login”输入正确信息后,就会自动跳转到项目首页,单击不同的电影名称可以查看影片详情。
细心的读者可能会发现,这种默认安全管理方式存在诸多问题,例如,只有唯一的默认登录用户user、密码随机生成且过于暴露、登录页面及错误提示页面不是我们想要的等。