Spring Security写一个简单的案例
时间: 2023-07-25 13:22:23 浏览: 100
好的,下面是一个使用 Spring Security 实现基于表单认证的简单案例。
1. 创建一个 Spring Boot 项目
首先,创建一个 Spring Boot 项目,并添加以下依赖:
```xml
<dependencies>
<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>
</dependencies>
```
2. 添加 Spring Security 配置
在应用程序中添加一个类,用于配置 Spring Security。在该类中,我们使用 `@EnableWebSecurity` 注解启用 Spring Security,并重写 `configure` 方法,实现基于表单认证方式的认证。
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login", "/css/**", "/js/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/home")
.permitAll()
.and()
.logout()
.permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER");
}
}
```
在上面的代码中,我们使用 `HttpSecurity` 类配置基于表单认证的 Spring Security 认证。我们允许 `/login`、`/css/**` 和 `/js/**` 的访问,其他的 URL 需要经过身份认证。登录页面为 `/login`,认证成功后跳转到 `/home` 页面。另外,我们使用 `AuthenticationManagerBuilder` 类配置了一个内存中的用户,用户名为 `user`,密码为 `password`,角色为 `USER`。
3. 添加登录页面和主页
在应用程序中添加登录页面和主页。登录页面为 `/login`,主页为 `/home`。
```html
<!-- login.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form method="post" action="/login">
<label>Username:</label>
<input type="text" name="username" /><br /><br />
<label>Password:</label>
<input type="password" name="password" /><br /><br />
<input type="submit" value="Submit" />
</form>
</body>
</html>
```
```html
<!-- home.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>Welcome to Home</h1>
<p>You have successfully logged in.</p>
<form action="/logout" method="post">
<input type="submit" value="Logout" />
</form>
</body>
</html>
```
4. 运行项目
最后,运行项目,并在浏览器中访问 `http://localhost:8080/login`,输入用户名和密码,即可登录成功,并跳转到主页 `http://localhost:8080/home`。
以上就是一个使用 Spring Security 实现基于表单认证的简单案例。当然,这只是一个非常简单的示例,Spring Security 还提供了很多其他的功能和认证/授权方式,可以根据实际需求进行配置和使用。
阅读全文