spring security 认证代码
时间: 2023-08-30 20:09:49 浏览: 74
详解Spring Security认证流程
下面是一个简单的 Spring Security 认证代码示例:
```java
@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("/public/**").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
}
```
其中,`UserDetailsService` 是用于获取用户信息的接口,需要实现 `loadUserByUsername()` 方法。在 `configureGlobal()` 方法中,将 `UserDetailsService` 注入到 `AuthenticationManagerBuilder` 中。
在 `configure()` 方法中,使用 `authorizeRequests()` 方法配置 URL 的访问权限,使用 `formLogin()` 方法配置登录页面和登录逻辑,使用 `logout()` 方法配置注销逻辑。
此外,还可以通过实现 `PasswordEncoder` 接口来自定义密码加密算法,然后在 `configureGlobal()` 方法中使用 `auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder())` 配置密码加密算法。
阅读全文