最新版springsecurity用内存授权多个用户
时间: 2024-09-17 11:02:42 浏览: 28
Spring Security是一个强大的开源安全框架,用于保护Web应用程序免受未经授权的访问。在最新的版本中,它支持内存中的权限管理,允许你快速地配置和调整用户的权限而无需每次都从数据库查询。
在内存授权中,你可以通过`@PreAuthorize`、`@PostAuthorize`、`@Secured`等注解直接在控制器方法上声明对特定用户或角色的权限。例如:
```java
@GetMapping("/private")
@PreAuthorize("hasRole('ADMIN')")
public String privatePage() {
// 只有拥有'ADMIN'角色的用户才能访问此页面
}
```
或者,你可以在`SecurityConfig`类中使用`InMemoryUserDetailsManager`来创建一系列预定义的用户和它们的角色映射:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated();
UserDetailsService userDetailsService = new InMemoryUserDetailsManager(
Arrays.asList(
User.withDefaultPasswordEncoder()
.username("user1")
.password("{noop}password1")
.roles("USER")
.build(),
User.withDefaultPasswordEncoder()
.username("admin")
.password("{noop}adminPassword")
.roles("ADMIN", "USER")
.build()));
http.userDetailsService(userDetailsService);
}
}
```
在这里,`/admin/**`路径下的请求仅限于`ADMIN`角色的用户,其他所有路径则需要登录验证。
阅读全文