Java 我想使用jdbcUserDetailsManager类及其方法实现spring安全性的注册和登录功能

Java 我想使用jdbcUserDetailsManager类及其方法实现spring安全性的注册和登录功能,java,spring,spring-boot,spring-security,Java,Spring,Spring Boot,Spring Security,我想使用jdbcUserDetailsManager类及其方法使spring安全性具有注册和登录功能。 我已经做了,但我想在需要帮助的地方实施一些东西。 每当我注册一个用户时,它就会被启用,但我没有使用逻辑来启用它。 我想要的是,每当用户注册时,它都会被自动禁用。在管理员批准后,用户将与角色一起启用。 请帮助。[请参阅突出显示的列]` Pojo类: package com.web.spring.model; public class UserRegistration { private

我想使用jdbcUserDetailsManager类及其方法使spring安全性具有注册和登录功能。 我已经做了,但我想在需要帮助的地方实施一些东西。 每当我注册一个用户时,它就会被启用,但我没有使用逻辑来启用它。 我想要的是,每当用户注册时,它都会被自动禁用。在管理员批准后,用户将与角色一起启用。 请帮助。[请参阅突出显示的列]`

Pojo类:

package com.web.spring.model;

public class UserRegistration {
    private String username;
    private String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}
控制器映射:

        @RequestMapping(value="/register",method=RequestMethod.GET)
        public ModelAndView register()
        {
            return new ModelAndView("registration","user", new UserRegistration());
        }

  @RequestMapping(value="/register",method=RequestMethod.POST)
    public ModelAndView register1(@ModelAttribute("user") UserRegistration user1)
    {   if(user1.getUsername()!=null && !user1.getUsername().isEmpty() 
    && user1.getPassword()!=null && !user1.getPassword().isEmpty()) {
       List<GrantedAuthority>  authorites= new ArrayList<GrantedAuthority>();
       //authorites.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
       authorites.add(new SimpleGrantedAuthority("ROLE_USER"));
       String encodedPwd=bCryptPassworEncoder.encode(user1.getPassword());
       User user=new User(user1.getUsername(),encodedPwd,authorites);

       jdbcUserDetailsManager.createUser(user);

        return new ModelAndView("redirect:/login");}
       else {
           return new ModelAndView("registration");
       }
    }
@RequestMapping(value=“/register”,method=RequestMethod.GET)
公共模型和视图寄存器()
{
返回新的ModelAndView(“注册”、“用户”、新用户注册());
}
@RequestMapping(value=“/register”,method=RequestMethod.POST)
公共模型和视图注册表1(@modeldattribute(“user”)UserRegistration user1)
{if(user1.getUsername()!=null&&!user1.getUsername().isEmpty()
&&user1.getPassword()!=null&&!user1.getPassword().isEmpty()){
列表作者=新建ArrayList();
//添加(新的SimpleGrantedAuthority(“角色管理”);
添加(新的SimpleGrantedAuthority(“角色用户”);
字符串encodedPwd=bCryptPassworEncoder.encode(user1.getPassword());
User User=新用户(user1.getUsername(),encodedPwd,authorites);
jdbcUserDetailsManager.createUser(用户);
返回新的ModelAndView(“重定向:/login”);}
否则{
返回新的ModelAndView(“注册”);
}
}

我想要的是,每当用户注册时,它都会被自动禁用

考虑使用
UserBuilder
方法
disabled
,例如:

jdbcUserDetailsManager.createUser(
  User.withUsername(user1.getUsername())
    .password(encodedPwd)
    .authorities(authorites)
    .disabled(false)
    .build()
);
或者,您可以使用更复杂的构造函数,并将
启用
作为第三个参数传递:

public User(String username, String password, boolean enabled,
            boolean accountNonExpired, boolean credentialsNonExpired,
            boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities)
public User(字符串用户名、字符串密码、启用布尔值、,
boolean AccountNoExpired,boolean CredentialsNoExpired,
布尔帐户未锁定,集合