【视频&交流平台】
SpringBoot视频:http://t.cn/R3QepWG
Spring Cloud视频:http://t.cn/R3QeRZc
SpringBoot Shiro视频:http://t.cn/R3QDMbh
SpringBoot交流平台:http://t.cn/R3QDhU0
SpringData和JPA视频:http://t.cn/R1pSojf
SpringSecurity5.0视频:http://t.cn/EwlLjHh
说明
(1)JDK版本:1.8
(2)Spring Boot 2.0.6
(3)Spring Security 5.0.9
需求缘起
在上一篇文章中,我们对于Spring Security有了一个基本的了解,那么重点是在Spring Boot中如何使用Spring Security呢?
一、Spring Security初体验
这里我们通过简单的集成方式来对Spring Security有一个基本的认知。
1.1 创建项目
创建一个项目,取名为:springboot2-springSecurity01
1.2 添加依赖
在pom.xml文件中添加依赖,主要是springboot parent starter和-start-web以及spring security的依赖。
spring-boot-starter-parent依赖:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
Spring Security和-web依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>
1.3 创建Spring Boot启动类
使用@SpringBootApplication创建Spring Boot启动类,如下代码:
package com.kfit;
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplicationpublic class Springboot2SpringSecurity01Application {
public static void main(String[] args) { SpringApplication.run(Springboot2SpringSecurity01Application.class, args); }}
如果使用的STS开发工具的话,上面的1.2和1.3都可以跳过。
1.4 编写Controller
随意编写一个测试Controller,这里取名为HelloController,如下示例代码:
package com.kfit.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;
@RestController@RequestMapping("/hello")public class HelloController {
@GetMapping public String getWelcomeMsg() { return "Hello,Spring Security"; }}
1.5 启动测试
启动应用程序,然后进行测试:
(1)访问如下地址:
http://localhost:8080/hello
如果接口能正常访问,那么应该显示“Hello,SpringSecurity”,但是我们是没法正常访问的,出现了下图的身份验证输入框:
这是因为在SpringBoot中,默认的Spring Security就是生效了的,此时的接口都是被保护的,我们需要通过验证才能正常的访问。 Spring Security提供了一个默认的用户,用户名是user,而密码则是启动项目的时候自动生成的。
我们查看项目启动的日志,会发现如下的一段Log:
Using generated securitypassword: 74adcd57-f0be-46c3-87cc-6d9d712cbc27
我们直接用user和启动日志中的密码进行登录,登录成功后,就跳转到了接口正常调用的页面了。
二、小技巧
2.1 关闭验证功能
如果一开始不想使用验证功能,怎么关闭呢?
在配置文件中配置
security.basic.enabled=false
的方式,在5.x版本之后提示过时了,那么应该怎么办呢?
方式一:在启动类中排除
SecurityAutoConfiguration,
如下示例代码:
@SpringBootApplication(exclude=SecurityAutoConfiguration.class)public class Springboot2SpringSecurity01Application {
public static void main(String[] args) { SpringApplication.run(Springboot2SpringSecurity01Application.class, args); }}
另外在Spring Boot 2.x中下面配置项被废弃了:
security.basic.authorize-modesecurity.basic.enabledsecurity.basic.pathsecurity.basic.realmsecurity.enable-csrfsecurity.headers.cachesecurity.headers.content-security-policysecurity.headers.content-security-policy-modesecurity.headers.content-typesecurity.headers.framesecurity.headers.hstssecurity.headers.xsssecurity.ignoredsecurity.require-sslsecurity.sessions
2.2 自定义用户名和密码
上面的用户名是默认的,密码是随时生成的,实在是不方便,那么怎么自定义用户名和密码呢,只需要在配置文件application.properties文件中添加如下配置:
spring.security.user.name = adminspring.security.user.password = 123456
历史文章
Spring Security更新视频:
9.Boot+Security:动态加载角色10.Boot+Security:原理111.Boot+Security:自定义Filter12.Boot+Security:页面白名单和获取登录信息13.Boot+Security:基于URL动态权限n种方案14.Boot+Security:基于URL动态权限:准备工作15.Boot+Security:基于URL动态权限:扩展access()的SpEL表达式
à悟空学院:http://t.cn/Rg3fKJD
学院中有Spring Boot相关的课程!点击「悟空学院」进行查看!
悟空学院的所有教程从11月10号到双十一都有优惠活动!
原文地址:https://www.cnblogs.com/springboot-wuqian/p/9940120.html