Programming/Spring Boot
[Spring Security] 수동 인증(강제 로그인)
빈쿵바라기
2023. 5. 16. 11:33
Spring 프로젝트를 진행하다보면 정의되지 않은 폼을 통해서 인증 처리를 해주어야 하는 경우가 있다.
이럴 때 특정 인가된 정보를 SecurityContext에 수동으로 등록해주고 세션에 주입해주면 된다.
@RequestMapping(value="login", method=RequestMethod.POST)
public String login(HttpServletRequest request) throws Exception{
CustomUserDetailsImpl user = new CustomUserDetailsImpl();
// 수동으로 권한 설정
List<GrantedAuthority> roles = new ArrayList<>();
roles.add(new SimpleGrantedAuthority("ROLE_USER"));
user.setUserRole(roles);
user.setUsername("Tester");
// 설정된 사용자 정보를 SecurityContext에 등록
Authentication auth = new UsernamePasswordAuthenticationToken(user, null, roles);
SecurityContext securityContext = SecurityContextHolder.getContext();
securityContext.setAuthentication(auth);
// 세션에 Spring Seuciry Context를 주입
HttpSession session = request.getSession(true);
session.setAttribute("SPRING_SECURITY_CONTEXT", securityContext);
return "redirect:/login/success";
}