org.springframework.security.crypto.password.PasswordEncoder源码地址

源码地址:https://github.com/spring-projects/spring-security/blob/master/crypto/src/main/java/org/springframework/sec
在Spring Security中启用JWT(JSON Web Tokens)支持,你需要做以下几个步骤: 1. 添加依赖:首先,确保你的项目Maven或Gradle配置文件中有Spring Security JWT的相关依赖。对于Maven,添加以下依赖到`pom.xml`: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> <!-- 或者最新的稳定版本 --> </dependency> ``` 如果你使用Gradle,添加到`build.gradle`: ```groovy implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'io.jsonwebtoken:jjwt:0.9.1' // 或者最新的稳定版本 ``` 2. 配置Spring Security:在Spring Boot应用的主配置类(通常是`Application.java`或`AppConfig.java`)中,添加JWT过滤器。例如,你可以创建一个JWTFilter并将其加入到Security Configuration的`WebSecurityConfigurerAdapter`中的`HttpSecurity`链中: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; public class SecurityConfig extends WebSecurityConfigurerAdapter { private final UserDetailsService userDetailsService; private final BCryptPasswordEncoder passwordEncoder; @Autowired public SecurityConfig(UserDetailsService userDetailsService, PasswordEncoder passwordEncoder) { this.userDetailsService = userDetailsService; this.passwordEncoder = passwordEncoder; } @Bean public JwtTokenProvider jwtTokenProvider() { return new JwtTokenProvider(); } @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() // 必须禁用CSRF,因为JWT不包含 CSRF令牌 .authorizeRequests() // 其他授权规则 .and() .addFilterBefore(new JwtAuthenticationFilter(authenticationManager()), UsernamePasswordAuthenticationFilter.class); } @Bean public AuthenticationManager authenticationManagerBean() throws Exception { return new DaoAuthenticationProvider(userDetailsService).setEncoder(passwordEncoder); } } ``` 这里的`JwtAuthenticationFilter`需要自定义,可以从网上找到示例或者第三方库如`sms4j-spring-boot-starter-jwt`。 3. 创建JWT处理器:你需要处理生成、验证和刷新JWT。这通常涉及创建一个`JwtService`类,用于生成JWT和处理请求头中的JWT。例如: ```java import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; public class JwtService { private static final String SECRET_KEY = "your-secret-key"; // 替换为实际的密钥 public String generateToken(String username, boolean isUser) { // ... } public boolean validateToken(String token) { // ... } } ``` 4. 安全扫描器:在`@EnableGlobalMethodSecurity`上添加`securedEnabled = true`,启用全局安全检查: ```java import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; @Configuration @EnableGlobalMethodSecurity(securedEnabled = true) public class GlobalSecurityConfiguration { // ... } ``` 5. 使用JWT:现在可以在API调用中使用JWT进行身份验证。在HTTP响应中设置`Authorization` header,格式为`Bearer your-token`。客户端在请求时必须提供此header。 完成以上步骤后,你应该就可以在Spring Security中使用JWT了。记得替换相关的密钥和配置以满足你的需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值