如何在运行时向Spring Security添加新用户
我刚刚开始使用Spring Security进行编程,并且我编写了系统,通过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");
}
}
这个工作完美,但有一点 - 用户在服务器启动时加载。 我需要编写方法RegisterUser(用户用户),在运行时将新用户添加到Spring Security。 这种方法应该只关注这个任务。 我不知道如何开始实施此功能,所以感谢您的任何建议! ;)
OFC用户有像登录,密码,角色字符串等等字段...
请不要用Spring MVC发布解决方案。 这个系统是使用Spring Web Boost和Spring Security Boost 4.0.x版本的RESTful应用程序
您可能希望将用户存储在数据库中,而不是内存中,如果他们正在注册:)
为用户创建权限
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);
使用此代码为当前用户添加权限:
List<GrantedAuthority> authorities = new ArrayList<>();
authorities.add(new SimpleGrantedAuthority("ROLE_NEWUSERROLE');
SecurityContextHolder.getContext().setAuthentication(
new UsernamePasswordAuthenticationToken(
SecurityContextHolder.getContext().getAuthentication().getPrincipal(),
SecurityContextHolder.getContext().getAuthentication().getCredentials(),
authorities)
);
链接地址: http://www.djcxy.com/p/28593.html