spring security 다시 문의
- 작성자 :
- 박*춘
- 작성일 :
- 2014-08-22 20:54:52
- 조회수 :
- 1,606
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
아래는 이전에 질문했던 내용인데요.
always-use-default-target="true" 를 준 이유는 로그인 후
default-target-url="/loginComplete.do" 가 실행되게 하려고 설정을 한 내용이고요. 이렇게 설정한 이유는 여기 포털에서 답변을 준 내용입니다.
또한 로그인 후 이전에 접근하려고 했던 페이지로 이동 시 로직을 추가해야 합니다.
질문 ------------------------------------------------------------------------------------------------------------------------------------------
spring security에서 권한이 있는 페이지 접근 시 로그인 페이지로 이동 후
로그인하면 원래 접근하려던 페이지로 이동하려고 합니다.
구현을 어떻게 하면 될지요?
아래는 security 설정입니다.
<http access-denied-page="/accessDenied.do" path-type="regex" lowercase-comparisons="false">
<form-login login-processing-url="/j_spring_security_check"
authentication-failure-url="/ogin.do?login_error=1"
default-target-url="/loginComplete.do"
always-use-default-target="true"
login-page="/login.do" />
<anonymous />
<logout logout-url="/j_spring_security_logout" logout-success-url="/index.do" />
<concurrent-session-control max-sessions="1" exception-if-maximum-exceeded="false" expired-url="/index.do" />
</http>
답변 ------------------------------------------------------------------------------------------------------------------------------------------
안녕하세요. 박래춘님
always-use-default-target="false"로 설정을 변경해 보시기 바랍니다.
고맙습니다.
always-use-default-target="true" 를 준 이유는 로그인 후
default-target-url="/loginComplete.do" 가 실행되게 하려고 설정을 한 내용이고요. 이렇게 설정한 이유는 여기 포털에서 답변을 준 내용입니다.
또한 로그인 후 이전에 접근하려고 했던 페이지로 이동 시 로직을 추가해야 합니다.
질문 ------------------------------------------------------------------------------------------------------------------------------------------
spring security에서 권한이 있는 페이지 접근 시 로그인 페이지로 이동 후
로그인하면 원래 접근하려던 페이지로 이동하려고 합니다.
구현을 어떻게 하면 될지요?
아래는 security 설정입니다.
<http access-denied-page="/accessDenied.do" path-type="regex" lowercase-comparisons="false">
<form-login login-processing-url="/j_spring_security_check"
authentication-failure-url="/ogin.do?login_error=1"
default-target-url="/loginComplete.do"
always-use-default-target="true"
login-page="/login.do" />
<anonymous />
<logout logout-url="/j_spring_security_logout" logout-success-url="/index.do" />
<concurrent-session-control max-sessions="1" exception-if-maximum-exceeded="false" expired-url="/index.do" />
</http>
답변 ------------------------------------------------------------------------------------------------------------------------------------------
안녕하세요. 박래춘님
always-use-default-target="false"로 설정을 변경해 보시기 바랍니다.
고맙습니다.
A
안녕하세요. 박래춘님.
약간의 혼선이 있으신 것 같습니다.
always-use-default-target="true"로 지정하신 경우 로그인이 성공할 경우 무조건 지정된 default-target-url 페이지로 이동하도록 설정하는 것입니다.
이렇게 되면 원하시는 로그인 이후 원래 접근하려도 페이지로 이동하는 것은 불가능합니다.
(둘 중 하나를 선택하셔야 함)
추가로 문의 주신 페이지 이동 시 로직을 추가하시는 부분은 다음과 같은 처리하시면 되실 것 같습니다.
- default-target-url로 이동 처리 시 : 이 경우는 지정하신 target-url 상의 Controller에서 처리 (ex: /loginComplete.do)
- 원래 접근하려던 페이지 이동 시 : authentication-success-handler를 직접 관리 (다음 예 참조)
<form-login ...
always-use-default-target="false"
authentication-success-handler-ref="authenticationSuccessHandler">
..
</form-login>
<beans:bean id="authenticationSuccessHandler" class="...CustomAuthenticationSuccessHandler"/>
public class CustomAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
// 로그인 성공 후 처리할 내용
super.onAuthenticationSuccess(request, response, authentication);
}
}
그럼, 즐거운 하루되십시오.
감사합니다.
약간의 혼선이 있으신 것 같습니다.
always-use-default-target="true"로 지정하신 경우 로그인이 성공할 경우 무조건 지정된 default-target-url 페이지로 이동하도록 설정하는 것입니다.
이렇게 되면 원하시는 로그인 이후 원래 접근하려도 페이지로 이동하는 것은 불가능합니다.
(둘 중 하나를 선택하셔야 함)
추가로 문의 주신 페이지 이동 시 로직을 추가하시는 부분은 다음과 같은 처리하시면 되실 것 같습니다.
- default-target-url로 이동 처리 시 : 이 경우는 지정하신 target-url 상의 Controller에서 처리 (ex: /loginComplete.do)
- 원래 접근하려던 페이지 이동 시 : authentication-success-handler를 직접 관리 (다음 예 참조)
<form-login ...
always-use-default-target="false"
authentication-success-handler-ref="authenticationSuccessHandler">
..
</form-login>
<beans:bean id="authenticationSuccessHandler" class="...CustomAuthenticationSuccessHandler"/>
public class CustomAuthenticationSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
// 로그인 성공 후 처리할 내용
super.onAuthenticationSuccess(request, response, authentication);
}
}
그럼, 즐거운 하루되십시오.
감사합니다.