springsecurity简单案例使用
时间: 2023-09-12 08:03:05 浏览: 83
以下是使用Spring Security的简单案例:
1. 创建一个Spring Boot应用程序
2. 添加Spring Security依赖项
3. 创建一个Spring Security配置类
4. 添加用户和角色
5. 在控制器中保护端点
1. 创建一个Spring Boot应用程序
首先,您需要创建一个新的Spring Boot应用程序。您可以使用Spring Initializr来创建一个新的项目。请确保选择了Spring Web和Thymeleaf作为依赖项。
2. 添加Spring Security依赖项
在pom.xml中添加以下依赖项:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
```
3. 创建一个Spring Security配置类
创建一个名为SecurityConfig的类,并将其标记为@Configuration和@EnableWebSecurity。在配置类中,您可以定义安全规则,例如哪些URL需要身份验证,哪些角色可以访问受保护的URL等。
```
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasRole("USER")
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.logout()
.logoutSuccessUrl("/login?logout")
.and()
.csrf().disable();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("admin").password("{noop}admin").roles("ADMIN")
.and()
.withUser("user").password("{noop}user").roles("USER");
}
}
```
在上面的代码中,我们定义了以下安全规则:
- /admin/** URL需要ADMIN角色才能访问
- /user/** URL需要USER角色才能访问
- 任何其他URL需要进行身份验证
- 我们使用基于表单的身份验证,因此我们需要提供一个登录页面
- 我们禁用了CSRF保护,以便简化示例
我们还定义了两个用户:admin和user。这些用户将在内存中进行身份验证,密码使用了{noop}前缀,这是因为Spring Security 5需要密码进行编码,但是在本示例中我们使用了没有编码的密码。
4. 添加用户和角色
我们在SecurityConfig类中定义了两个用户:admin和user。这些用户将在内存中进行身份验证。在实际情况下,您可能会使用其他身份验证提供程序,例如数据库或LDAP。
5. 在控制器中保护端点
现在我们可以在控制器中保护端点。为此,请使用@PreAuthorize注释指定所需的角色。
```
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "home";
}
@GetMapping("/admin")
@PreAuthorize("hasRole('ADMIN')")
public String admin() {
return "admin";
}
@GetMapping("/user")
@PreAuthorize("hasRole('USER')")
public String user() {
return "user";
}
}
```
在上面的代码中,我们使用@PreAuthorize注释来指定保护/admin和/user端点所需的角色。如果用户没有所需的角色,则无法访问这些端点。
现在您可以启动应用程序并尝试访问以下URL:
- http://localhost:8080/ - 首页,不需要身份验证
- http://localhost:8080/admin - 需要ADMIN角色才能访问
- http://localhost:8080/user - 需要USER角色才能访问
如果您尝试访问/admin或/user URL而不先进行身份验证,则会重定向到登录页面。在登录页面上,您可以使用admin或user作为用户名,使用相应的密码进行身份验证。
阅读全文