Spring Security 十分钟入门教程
Spring Security 是一个基于 Spring 框架的安全框架,能够为 web 应用程序提供身份验证和授权的支持。
开始之前
在开始学习之前,需要具备以下知识:
- Spring 框架基础
- Maven 项目管理工具
- Spring Boot 基础知识
步骤
步骤一:创建一个 Spring Boot Web 项目
首先,需要创建一个 Spring Boot Web 项目。可以使用以下命令来创建:
mvn archetype:generate -DgroupId=com.example -DartifactId=demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
其中,groupId
和 artifactId
可以根据实际情况进行修改。
步骤二:添加 Spring Security 依赖
在 pom.xml
文件中添加以下依赖:
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
步骤三:配置 Spring Security
在 src/main/resources
下创建一个名为 application.yml
的文件,添加以下配置:
spring:
security:
user:
name: admin
password: password
roles: ADMIN
这里配置了一个名为 admin
,密码为 password
,角色为 ADMIN
的用户。
步骤四:创建 Controller
创建一个名为 HomeController
的 Controller,代码如下:
@RestController
public class HomeController {
@GetMapping("/")
public String home() {
return "Welcome!";
}
}
这里创建了一个名为 home
的路由,返回一个简单的欢迎信息。
步骤五:启动应用
现在,可以启动应用并访问 http://localhost:8080
,将会看到一个简单的欢迎信息。
步骤六:添加身份验证
在 src/main/java
下创建一个名为 SecurityConfig
的类,代码如下:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("admin")
.password("password")
.roles("ADMIN");
}
}
这里添加了身份验证,并配置了一个名为 admin
,密码为 password
,角色为 ADMIN
的用户。
步骤七:重新启动应用
现在,需要重新启动应用,并再次访问 http://localhost:8080
,将会看到一个身份验证页面。输入用户名和密码(这里是 admin
和 password
),将会看到之前的欢迎信息。
示例
示例一:限制访问
在 HomeController
中添加一个名为 /admin
的路由,代码如下:
@GetMapping("/admin")
@PreAuthorize("hasRole('ADMIN')")
public String admin() {
return "Admin Page";
}
这里限制了 /admin
路由的访问只能由角色为 ADMIN
的用户进行访问。
示例二:自定义登录页面
在 SecurityConfig
中添加以下配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.httpBasic();
}
然后,在 HomeController
中添加一个名为 /login
的路由,代码如下:
@GetMapping("/login")
public String login() {
return "Login Page";
}
这里定义了一个自定义的登录页面 /login
。
结论
在本教程中,我们介绍了如何在 Spring Boot 中使用 Spring Security。我们了解了如何添加身份验证、限制访问、自定义登录页面等内容。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Security十分钟入门教程 - Python技术站