Spring에서 Ajax로 작업시 세션처리에 대한 질문입니다.

1,796 views
Skip to first unread message

박창준

unread,
Dec 23, 2009, 11:40:46 PM12/23/09
to Korea Spring User Group
세션검사는 인터셉터로 하는데 문제는 Ajax로 요청이 들어온 경우에는
인증실패(세션에러)화면으로 이동할 수 없다는데 있습니다.
혹시 이런 문제에 대해서 해결방법을 아시면 도움부탁드리겠습니다.
그럼 수고하세요

백기선

unread,
Dec 29, 2009, 5:27:56 AM12/29/09
to ks...@googlegroups.com
봄싹에서 사용하고 있는 방법을 설명드리자면 다음과 같습니다.

1. (화면에서) 일반 요청과 Ajax 요청을 구분합니다.

2. (서버에서) 필터에서 Ajax 요청 처리 중에 예외가 발생했을 때 '인증' 또는 '권한' 에러를 잡아서 response에 적절한 status 코드를 넣어 줍니다.

3. (화면에서) Ajax 요청 실패시에 XmlHttpRequest의 status 정보를 확인해서 원하는 일을 처리할 수 있습니다.

화면 코드

$.ajaxSetup({
beforeSend : function(xhr) {
xhr.setRequestHeader("AJAX", "true"); // 1
},
        error : function(e){
            alert(e.stastatus + " " + e.statusText) // 3
            ajaxError();
        }
});

서버 코드

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
   HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        
        //AJAX 요청인가요?
        if(req.getHeader(ajaxHaeder) != null && req.getHeader(ajaxHaeder).equals("true")) {
        
                try {
                 chain.doFilter(req, res);
                } catch (AccessDeniedException e) {
                        res.sendError(HttpServletResponse.SC_UNAUTHORIZED);
                } catch (AuthenticationException e) {
                        res.sendError(HttpServletResponse.SC_FORBIDDEN);
                }
        } else
         chain.doFilter(req, res);
}

흠.. 도움이 되실지 몰겠네요.


2009년 12월 24일 오후 1:40, 박창준 <cine...@naver.com>님의 말:

--

Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.





--
좋은 하루 되세요~

Reply all
Reply to author
Forward
0 new messages