bcrypt rawpassword不能为空

gywdnpxw  于 2021-07-16  发布在  Java
关注(0)|答案(1)|浏览(482)

我有以下问题:
出现意外错误(类型=内部服务器错误,状态=500)。rawpassword不能为null java.lang.illegalargumentexception:rawpassword不能为null
这是我的securityconfig类

package my.taco.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
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;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private UserDetailsService userDetailsService;

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

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception{
        auth
                .userDetailsService(userDetailsService)
                .passwordEncoder(encoder());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception{
        http
                .authorizeRequests()
                .antMatchers("/design","/orders").access("hasRole('ROLE_USER')")
                .antMatchers("/","/**").access("permitAll")
                .and()
                .formLogin()
                .loginPage("/login")
                .defaultSuccessUrl("/design",true)
                .and()
                .logout()
                .logoutSuccessUrl("/");

    }

}

当我使用密码编码器时也要编码

public User toUser(PasswordEncoder passwordEncoder){
        return new User(
                username,passwordEncoder.encode(password),
                fullname,street,city,state,zip,phone);
    }

@PostMapping
    public String processRegistration(RegistrationForm form){
        userRepo.save(form.toUser(passwordEncoder));
        return "redirect:/login";
    }
kokeuurv

kokeuurv1#

事实上,我也有同样的问题,我试过很多问题。在 RegistrationForm.java 文件,我声明了两个构造函数,一个带arg,另一个没有arg。当我删除no arg构造函数时,表单的字段不为null。

相关问题