我通过 Hibernate 将用户保存在数据库表中,并且我正在使用 Spring Security 进行身份验证:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.*;
import org.springframework.security.config.annotation.authentication.builders.*;
import org.springframework.security.config.annotation.web.configuration.*;
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
这很好用,但有一点 - 用户在服务器启动期间被加载。我需要编写在运行时将新用户添加到 Spring Security 的方法 RegisterUser(User user)。这种方法应该只关注这个任务。我不知道如何开始实现此功能,所以感谢您的任何建议! ;)
Ofc 用户具有登录名、密码、角色字符串等字段...
请不要使用 Spring MVC 发布解决方案。本系统是使用 Spring Web Boost 和 Spring Security Boost 4.0.x 版本的 RESTful 应用程序
最佳答案
如果用户正在注册,您可能希望将用户存储在数据库中而不是内存中:)
创建authorities为用户
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
authorities.add(new SimpleGrantedAuthority("ROLE_USER"));
实例化用户(使用实现 UserDetails 的类)
UserDetails user = new User("user@example.com", passwordEncoder.encode("s3cr3t"), authorities);
将用户保存在有用的地方。 JdbcUserDetailsManager可以轻松地将用户保存到数据库。
userDetailsManager.createUser(user);
创建 UsernamePasswordAuthenticationToken
Authentication authentication = new UsernamePasswordAuthenticationToken(user, null, authorities);
将身份验证添加到 SecurityContext
SecurityContextHolder.getContext().setAuthentication(authentication);
https://stackoverflow.com/questions/32244745/
相关文章:
java - 使用 Spring JavaConfig 和 @Autowired 注入(inject
java - Spring MVC : Resolving the view based on Us
java - spring mvc 表单 :select tag
java - 如何使用spring websocket向自定义用户发送自定义消息?
java - Spring Security 3 - 总是返回错误 302
java - 在 Spring Hibernate java 项目中使用 "Envers"审计表
java - Spring WS : How to get and save XSD validat