Spring Boot 项目鉴权的 4 种方式
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认证过滤器
}
}
每种鉴权方式都有其适用场景,开发者可以根据项目需求选择合适的鉴权方式。
评论已关闭