Security 로그인 후 이전페이지 가기 | spring
2016. 1. 5. 16:31ㆍframework/spring
Spring security
를 사용할 때 특정 페이지에서 인증이 필요하면 로그인 페이지로 리다이렉트를 시키면 된다. 그런데 로그인 후 첫 페이지로 가는 것이 아니라 원래 이용하려던 서비스 페이지로 가야하는 기능이 필요하다면 AuthenticationSuccessHandler
인터페이스를 구현하면 된다. 물론 로그인 페이지로 이동하는 시점에 원래 페이지를 기억하도록 해야 한다. 실제 소스로 해보자.
1. Success Handler 구현
public class CustomLoginSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {
public CustomLoginSuccessHandler(String defaultTargetUrl) {
setDefaultTargetUrl(defaultTargetUrl);
}
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws ServletException, IOException {
HttpSession session = request.getSession();
if (session != null) {
String redirectUrl = (String) session.getAttribute("prevPage");
if (redirectUrl != null) {
session.removeAttribute("prevPage");
getRedirectStrategy().sendRedirect(request, response, redirectUrl);
} else {
super.onAuthenticationSuccess(request, response, authentication);
}
} else {
super.onAuthenticationSuccess(request, response, authentication);
}
}
}
|
cs |
2. 인증 페이지로 이동하기 전 URL 기억
@RequestMapping(value = "/login", method = RequestMethod.GET)public String loginPage(HttpServletRequest request) { String referrer = request.getHeader("Referer"); request.getSession().setAttribute("prevPage", referrer); return "login";} cs
3. Security Config 설정
Java Config의 경우
@Overrideprotected void configure(HttpSecurity http) throws Exception { http .formLogin() .loginPage("/login") .successHandler(successHandler()) .permitAll() ... ;} ... @Beanpublic AuthenticationSuccessHandler successHandler() { return new CustomLoginSuccessHandler("/defaultUrl");} cs
출처 : http://chomman.github.io/blog/java/spring%20security/programming/spring-security-redirect-previous-after-login/
도움이 되셨다면 공감을 부탁드립니다. ^^
'framework > spring' 카테고리의 다른 글
SPRING @Async를 활용한 multi thread 구현 - 4 - ExceptionHandler 생성 (0) | 2017.07.11 |
---|---|
SPRING @Async를 활용한 multi thread 구현 - 3 - @Async 사용 및 Task 추가 (0) | 2017.07.11 |
SPRING @Async를 활용한 multi thread 구현 - 2 - AsyncConfigurer 생성 (0) | 2017.07.11 |
SPRING @Async를 활용한 multi thread 구현 - 1 - 개요 (0) | 2017.07.11 |
spring excel csv download 하기 / super-csv jar 사용하기 / AbstractView (0) | 2017.06.30 |
특정 JAVA , JSP 에서 Bean 객체 가져오기 | spring (0) | 2016.01.05 |
메일 보내기 / mail sample | spring (0) | 2016.01.05 |
vo list / form list / @ModelAttribute list / list로 받기 | spring (0) | 2016.01.05 |
@ResponseBody / ajax / 아작스 / messageConverters | spring (0) | 2016.01.05 |
스케줄러 / scheduler | spring (0) | 2016.01.05 |