下面是SpringBoot与SpringSecurity整合方法的攻略:
前置要求
本文假设你已经具备以下的知识储备:
- SpringBoot的基础知识
- SpringSecurity的基础知识
如果你还不太熟悉这些知识,我建议你先去学习一下,再来阅读本文。
步骤一:创建SpringBoot项目
首先我们需要创建一个SpringBoot项目,你可以使用任何一种方式来创建项目,比如使用Eclipse、IntelliJ IDEA等。这里我以Spring Initializr为例来创建一个简单的SpringBoot项目。
首先打开Spring Initializr,选择要创建的项目的相关配置。这里我创建的项目名为springboot-security-demo
,使用Java 11,其他配置默认即可。然后点击“Generate”按钮,下载生成的项目文件。
步骤二:添加SpringSecurity依赖
接着我们需要在pom.xml
文件中添加SpringSecurity依赖。将以下代码添加到<dependencies>
标签中即可。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
步骤三:创建登录页面
在项目根目录下,我们需要创建一个名为login.html
的登录页面。这里我给出一个简单的示例,你可以根据自己的需求来对其进行修改。
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form method="post" action="/login">
<label for="username">Username</label>
<input type="text" id="username" name="username" placeholder="Username">
<br>
<label for="password">Password</label>
<input type="password" id="password" name="password" placeholder="Password">
<br><br>
<button type="submit">Login</button>
</form>
</body>
</html>
步骤四:配置SpringSecurity
接下来我们需要配置SpringSecurity,使其可以处理登录请求等相关操作。
在项目根目录下,我们需要创建一个名为SecurityConfig.java
的Java类,并添加以下代码:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
这里要注意,SecurityConfig.java
必须继承WebSecurityConfigurerAdapter
类,并添加@Configuration
和@EnableWebSecurity
注解。
在configure()
方法中,我们配置了登录页面、允许访问的URL、以及退出登录等相关选项;在configureGlobal()
方法中,我们为用户user
赋予了USER
角色,并设置了密码为password
。
步骤五:添加Home页面
最后我们需要添加一个名为home.html
的Home页面。这里我给出一个简单的示例,你可以根据自己的需求来对其进行修改。
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>Welcome!</h1>
<p>This is the home page.</p>
</body>
</html>
示例一:测试未登录状态下的行为
我们可以使用浏览器来测试未登录状态下的行为。在浏览器的地址栏中输入http://localhost:8080/
,可以看到我们定义的登录页面。在输入Username
和Password
之后点击Login
,如果输入的用户名和密码符合configureGlobal()
中设置的内容,就会跳转到Home页面。
示例二:测试已登录状态下的行为
我们可以在configureGlobal()
方法中为用户添加不同的角色,并测试不同角色访问不同URL的情况。比如我们为用户admin
添加ADMIN
角色,同时配置/admin
URL需要ADMIN
角色才能访问。这里我们可以在home.html
中添加一个链接到/admin
的超链接,点击后会被重定向到登录页面,输入管理员的账号密码后才能访问/admin
页面。
这就是SpringBoot与SpringSecurity整合的基本流程和方法,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot与SpringSecurity整合方法附源码 - Python技术站