Spring Boot 提供了多种鉴权方式,以下是四种常见的鉴权方式及其简要说明和示例代码:
HTTP Basic Authentication:
基于HTTP基本认证的鉴权,通过
@EnableWebSecurity注解和http.basic()方法启用。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .httpBasic();
    }
}Form Login:
基于表单的登录鉴权,通常用于提供一个登录页面供用户输入凭据。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .formLogin();
    }
}OAuth2:
使用Spring Security的支持,可以很容易地集成OAuth2鉴权。
@Configuration
@EnableAuthorizationServer
public class AuthServerConfig extends AuthorizationServerConfigurerAdapter {
    // ...
}JWT:
使用JSON Web Tokens (JWT)进行鉴权,JWT可以在没有session的情况下提供身份验证。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable() // 禁用CSRF保护
            .authorizeRequests()
            .antMatchers("/authenticate").permitAll() // 允许匿名用户访问登录接口
            .anyRequest().authenticated()
            .and()
            .addFilter(new JwtAuthenticationFilter(authenticationManager())); // 添加JWT认证过滤器
    }
}每种鉴权方式都有其适用场景,开发者可以根据项目需求选择合适的鉴权方式。