帮我写一个spring security 的简单案列
时间: 2023-07-18 11:41:22 浏览: 85
好的,以下是一个简单的 Spring Security 案例:
1. 首先,我们需要在 pom.xml 中添加 Spring Security 依赖:
```xml
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.3.2.RELEASE</version>
</dependency>
```
2. 然后,我们需要创建一个 Spring Security 配置类,例如 SecurityConfig:
```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("{noop}password").roles("USER");
}
}
```
这个配置类中,我们定义了登录页面、权限控制和认证方式。在这个案例中,我们采用了基于内存的认证方式,用户名为 "user",密码为 "password"。
3. 接下来,我们需要创建一个简单的控制器类,例如 HomeController:
```java
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "home";
}
@GetMapping("/hello")
public String hello() {
return "hello";
}
@GetMapping("/login")
public String login() {
return "login";
}
}
```
这个控制器类中,我们定义了几个简单的路由,分别用于显示主页、欢迎页面和登录页面。
4. 最后,在 resources 目录下创建以下几个页面:
- home.html
- hello.html
- login.html
这些页面中,home.html 和 hello.html 分别用于显示主页和欢迎页面,login.html 用于显示登录页面。
现在,我们就完成了一个简单的 Spring Security 案例。当用户访问 "/hello" 页面时,如果未经过认证,则会被重定向到 "/login" 页面,要求输入用户名和密码。如果认证成功,则会显示欢迎页面;否则,会继续显示登录页面。
阅读全文