스프링 시큐리티 3.1버전으로 프로젝트를 진행중인데 모르는부분이 생겨 질문드립니다.
권한이 없는 URL로 접근할경우 로그인페이지로 이동하게 되있는데
여기서 로그인한뒤에 좀전의 권한이 없었던 URL로 다시 보낼려면 어떻게 해야되나요??
시큐리티는 너무어려운거 같아요.ㅠㅠ
도움좀 부탁드려요.
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.
<form-login login-page="/main/loginPage" login-processing-url="/
login"
always-use-default-target="false"
authentication-success-handler-ref="authenticationSuccessHandler"
<-- 이부분
authentication-failure-url="/main/loginFailure"/>
저렇게 authentication-success-handler-ref 이부분을 등록해 주세요
<beans:bean id="authenticationSuccessHandler" class="클래스 위치 "/>
이 클래스 내용은
public class CustomAuthenticationSuccessHandler extends
SavedRequestAwareAuthenticationSuccessHandler implements
AuthenticationSuccessHandler{
public void onAuthenticationSuccess(HttpServletRequest
request, HttpServletResponse response, Authentication authentication)
throws IOException, ServletException {
// 로그인 완료후 처리할 내용
super.onAuthenticationSuccess(request, response, authentication);
}
}
이런식으로 클래스를 만들어 주시면
따로 저런식으로 사용 안하셔도 로그인 완료 후 처리가 됩니다.
SavedRequestAwareAuthenticationSuccessHandler 이걸 상속 받으시면 완료 후 이전 URL로 이
동합니다.
On 3월27일, 오전10시15분, okangilo <okang...@gmail.com> wrote:
> 오전에 출근하자마자 테스트해봤는데..
> 형민님이랑 용권님 방법을 동시에 적용하면 될거같기도 한데..
> 또 막혀버렸어요ㅠ_ㅠ
>
> 먼저 용권님이 얘기주신데로 하니 로그인이후에 제가 원한 이전페이지로 돌아가긴하는데
> default-target-url='/common/user/login_success.do'
> 제가 위의 저쪽 메서드에서 필요한정보를 session을 등록해놨는데
> 그부분만 처리가 되면될거같아요..
>
> 형민님이 얘기주신 이전 페이지의 정보를 login_success.do에서 가져오는 방법을 찾아내던지
> 용권님이 얘기주신 방법을 사용하면서 로그인성공시의 이벤트를 잡아서 세션을 추가해주면 되지않을까라고 고민을하면서
>
> 답변을 작성할려구 들어왔어요.
> 감사합니다
>
> 2012년 3월 26일 오후 7:43, okangilo <okang...@gmail.com>님의 말:
>
>
>
>
>
>
>
> > 허걱..내일 한번 해보고 결과 적겠습니다..
>
> > 2012년 3월 26일 오후 7:15, 박용권 <arawn...@gmail.com>님의 말:
>
> > default-target-url='/common/user/login_success.do' 값과
> >> always-use-default-target='true' 값을 제거하시면 원하시는 행동을 할거에요.
>
> >> 2012년 3월 26일 오후 6:38, okangilo <okang...@gmail.com>님의 말:
>
> >> 먼저 답변달아주셔서 감사합니다!
>
> >>> 제가 아직 시큐리티를 다루는게 미숙해서
> >>> 뭔가 아~! 하면서도 어떻게 해야될지를 모르겠어요.
>
> >>> 좀더 설명을 붙여서 다시한번 질문드리겠습니다.
>
> >>> <form-login login-page='/common/user/login.do'
> >>> login-processing-url="/j_spring_security_check"
> >>> default-target-url='/common/user/login_success.do'
> >>> authentication-failure-url="/common/user/login.do?error=1"
> >>> always-use-default-target='true' />
>
> >>> 시큐리티 설정을 이렇게 해놨습니다.
>
> >>>http://localhost:8080/center/main.do( 허용 )
> >>>http://localhost:8080/center/report/report.do(미허용)
>
> >>> 메인페이지에서 report.do 링크를 클릭하게되면 권한이 없는페이지라서
> >>> 설정에 있는 /common/user/login.do 가 호출되는데
> >>> request에 있는 referer를 뽑아봐도 report.do 가 아닌 main.do 를 가지고있습니다.
>
> >>> 위의 설정처럼 해서는 중간에 인증이 불허된 report.do의 정보를 가져오는건 안되는건가요?
>
> >>> 2012년 3월 26일 오후 5:59, 전형민 <super...@wellsoft.co.kr>님의 말:
>
> >>> 오래간만에 답변을 올려 봅니다.
>
> >>>> 우선 해결 방안을 올리기 전에 저는 security 를 조금 수정해서 사용하고 있음으로 감안하고 들어 주십시요.
>
> >>>> 하지만 해결 아이디어 정도는 드릴수도 있을것 같아서 글을 올립니다.
>
> >>>> 1. 권한이 없어서 login page로 전달할때 이전 request를 pageContext에서 가지고 있을 것입니다.
> >>>> login page로 이동할때 최초 request를 유지하고 있을 경우 해당 request의 정보에서
> >>>> 좀전에 요청한 url을 다시 받을수 있겠죠...
>
> >>>> 2. 권한없는 page에서 login page로 이동할때 redirect: 하지 않고 forward: 하면.
> >>>> 브리우져의 url에는 최초에 요청한 url이 그대로 남아 있습니다.
> >>>> 해당 정보를 활용해도 되겠죠..
>
> >>>> 그럼 도움이 되었기를 바랍니다.
>
> >>>> ------------------------------------
> >>>> 당신의 과거가 당신을 만든다.
>
> >>>> 2012년 3월 26일 오후 5:26, okangilo <okang...@gmail.com>님의 말:
>
> >>>> 안녕하세요.
>
> >>>>> 스프링 시큐리티 3.1버전으로 프로젝트를 진행중인데 모르는부분이 생겨 질문드립니다.
>
> >>>>> 권한이 없는 URL로 접근할경우 로그인페이지로 이동하게 되있는데
> >>>>> 여기서 로그인한뒤에 좀전의 권한이 없었던 URL로 다시 보낼려면 어떻게 해야되나요??
>
> >>>>> 시큐리티는 너무어려운거 같아요.ㅠㅠ
>
> >>>>> 도움좀 부탁드려요.
>
> >>>>> --
> >>>>> Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> >>>>> 이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
> >>>>> 그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
> >>>>> 더 많은 옵션을 보려면http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.
>
> >>>> --
> >>>> Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> >>>> 이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
> >>>> 그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
> >>>> 더 많은 옵션을 보려면http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.
>
> >>> --
> >>> Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> >>> 이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
> >>> 그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
> >>> 더 많은 옵션을 보려면http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.