簡體   English   中英

Spring Security,PasswordEncoder問題

[英]Spring Security, Problem with PasswordEncoder

我的PasswordEncoder有問題,

我的代碼:

@Service
public class UserService {

    private static final String DEFAULT_ROLE = "ROLE_USER";
    private UserRepository userRepository;
    private UserRoleRepository roleRepository;
    public PasswordEncoder passwordEncoder;


    @Autowired
    public UserService(PasswordEncoder passwordEncoder){
        this.passwordEncoder = passwordEncoder;
    }

    @Autowired
    public void setUserRepository(UserRepository userRepository){
        this.userRepository = userRepository;
    }

    @Autowired
    public void setUserRoleRepository(UserRoleRepository roleRepository){
        this.roleRepository = roleRepository;
    }

    public void addWithDefaultRole(User user){
        UserRole defaultRole = roleRepository.findByRole(DEFAULT_ROLE);
        user.getRoles().add(defaultRole);
        String passwordHash = passwordEncoder.encode(user.getPassword());
        user.setPassword(passwordHash);
        userRepository.save(user);
    }

}

錯誤:


申請開始失敗


描述:

org.spring.service.UserService中的構造函數的參數0需要找不到類型為“ org.springframework.security.crypto.password.PasswordEncoder”的bean。

行動:

考慮在配置中定義類型為“ org.springframework.security.crypto.password.PasswordEncoder”的bean。

流程以退出代碼1完成

我不知道該如何解決。

為了使依賴項注入正常工作,您需要先聲明一個適當類型的bean,否則就沒有任何注入。 正是這樣告訴您例外情況。

@Bean
public PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder(); // or any other password encoder
}

嘗試這種方式(兩個bean之一,而不是兩個):

    @Configuration
    @EnableWebSecurity
    public class WebSecurityConfigAuthentication extends WebSecurityConfigurerAdapter {

        //   For BCrypt Encoded password

        @Bean
        public PasswordEncoder passwordEncoder() {
           PasswordEncoder encoder = new BCryptPasswordEncoder();
           return encoder;
        }


         OR


        //   For no Encoder, plain text password

        @Bean
        public static NoOpPasswordEncoder passwordEncoder() {
           return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance();
        }



    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM