SpringSecurity 강제로 로그인 시키기
SpringSecurity 강제로 로그인 시키기
정의되지 않은 로그인 폼을 통해서 로그인 할 경우에도 강제로 SpringSecurity의 로그인 세션을 생성하는 방법을 구현하였다.
1. 로그인으로 사용한 URL에 대한 세션체크 기능을 제외한다.
1
<http pattern="/login" security="none"></http>
2. 컨트롤러에서 SpringSecurity에 세션 주입
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Resource(name="userDetailsService")
protected UserDetailsService userDetailsService;
@RequestMapping(value="login", method=RequestMethod.POST)
public String login(HttpServletRequest request) throws Exception{
UserDetails ckUserDetails = userDetailsService.loadUserByUsername("USER_ID");
Authentication authentication = new UsernamePasswordAuthenticationToken(ckUserDetails, "USER_PASSWORD", ckUserDetails.getAuthorities());
SecurityContext securityContext = SecurityContextHolder.getContext();
securityContext.setAuthentication(authentication);
HttpSession session = request.getSession(true);
session.setAttribute("SPRING_SECURITY_CONTEXT", securityContext);
return "redirect:/login/success";
}
This post is licensed under CC BY 4.0 by the author.