[SPRING] 런타임시 새로운 사용자를 Spring Security에 추가하는 방법
SPRING런타임시 새로운 사용자를 Spring Security에 추가하는 방법
Hibernate를 통해 DB 테이블에 사용자를 저장하고 인증을 위해 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로 솔루션을 게시하지 마십시오. 이 시스템은 버전 4.0.x에서 Spring Web Boost와 Spring Security Boost를 사용하는 RESTful 앱이다.
해결법
-
==============================
1.사용자가 등록하는 경우 데이터베이스가 아닌 메모리에 사용자를 저장하려고합니다. :)
사용자가 등록하는 경우 데이터베이스가 아닌 메모리에 사용자를 저장하려고합니다. :)
-
==============================
2.이 코드를 사용하여 현재 사용자에게 권한을 추가하십시오.
이 코드를 사용하여 현재 사용자에게 권한을 추가하십시오.
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) );
from https://stackoverflow.com/questions/32244745/how-to-add-new-user-to-spring-security-at-runtime by cc-by-sa and MIT license