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