只使用 Spring Security 的 PasswordEncoder,但不使用其登录功能。即不依赖 Spring Security 的认证机制。


实现思路

  1. 引入依赖:确保你引入了 Spring Security 的依赖,但不需要启用其安全配置。
  2. 手动配置 PasswordEncoder Bean:在配置类中手动声明 PasswordEncoder Bean,这样你可以在业务代码中注入并使用它。
  3. 避免启用 Spring Security 的安全功能:不添加 @EnableWebSecurity 注解,也不配置 SecurityFilterChain,以避免启用完整的安全机制。
  4. 按需使用密码编码器:在你的业务逻辑中(如用户注册或密码修改),注入并使用 PasswordEncoder

1. 添加依赖

如果你使用的是 Maven,确保 pom.xml 中包含 Spring Security 的依赖:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>
</dependency>

注意:如果你只需要 PasswordEncoder,可以只引入 spring-security-core,而不需要 spring-security-webspring-security-config


2. 手动配置 PasswordEncoder

创建一个配置类,手动定义 PasswordEncoder Bean:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration
public class PasswordConfig {

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder(); // 使用 BCrypt 加密算法
    }
}

3. 在业务中使用 PasswordEncoder

例如,在注册或修改密码时使用它:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    private PasswordEncoder passwordEncoder;

    public void registerUser(String rawPassword) {
        String encodedPassword = passwordEncoder.encode(rawPassword);
        // 保存到数据库...
    }
}

4. 不启用 Spring Security 的安全功能

确保不添加以下内容:

  • 不添加 @EnableWebSecurity
  • 不配置 SecurityFilterChain
  • 不添加 spring-security-webspring-security-config 依赖(除非你需要)

这样就不会启用 Spring Security 的登录、权限控制等完整安全机制。


总结

|目标|实现方式|
|-|-|
|使用 PasswordEncoder|引入 spring-security-core,手动配置 Bean|
|不使用登录功能|不启用 @EnableWebSecurity,不配置安全链|
|按需使用加密|在业务逻辑中注入 PasswordEncoder 使用|


如果你有具体项目结构或当前依赖信息,我可以帮你更具体地调整配置。是否需要我帮你修改当前项目的代码?

最后修改:2025 年 07 月 23 日
如果觉得我的文章对你有用,请随意赞赏