springboot权限控制
时间: 2023-07-08 13:39:28 浏览: 78
SpringBoot集成Spring Security实现权限控制【完整源码+数据库】
5星 · 资源好评率100%
Spring Boot提供了多种权限控制的方式,其中最常见的是基于Spring Security框架的实现。
下面是一个简单的Spring Security配置示例:
1. 添加Spring Security依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
```
2. 配置Spring Security:
```
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/user/**").hasAnyRole("ADMIN", "USER")
.anyRequest().authenticated()
.and().formLogin().loginPage("/login").permitAll()
.and().logout().permitAll();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
```
3. 添加UserDetailsService实现:
```
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
private UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userRepository.findByUsername(username);
if (user == null) {
throw new UsernameNotFoundException("User not found");
}
return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(),
getAuthorities(user));
}
private Collection<? extends GrantedAuthority> getAuthorities(User user) {
List<GrantedAuthority> authorities = new ArrayList<>();
for (Role role : user.getRoles()) {
authorities.add(new SimpleGrantedAuthority(role.getName()));
}
return authorities;
}
}
```
在上面的示例中,我们定义了两个角色:ADMIN和USER。ADMIN角色有权限访问以/admin开头的所有URL,而USER角色则可以访问以/user开头的所有URL。此外,任何已经通过身份验证的用户都可以访问其他URL。
要使用上述配置,您需要创建一个登录页面,该页面允许用户通过表单进行身份验证,并在成功身份验证后将其重定向到所需的URL。您还需要创建注销URL和注销成功页面。
以上是一个简单的Spring Security权限控制配置示例,您可以根据实际需求进行修改和扩展。
阅读全文