2011-11-10 5 views
0

답변은 나에게 합당하지 않다는 점을 제외하고는 여기에서와 똑같은 질문을합니다.스프링 보안 액세스 거부 처리기

는 나는이 만들어 그들의 대답에 말을했는지에 따라하려

Spring Security Access Denied Handler - how do you determine what the URL was that the user tried to access?

그러나

@RequestMapping("/invalidPermission") 
public void invalidPermission(HttpServletRequest request) { 
    System.out.println(request.getServletPath()); 
} 

을의 request.getServletPath()는 분명히 대신 원래 URL의/invalidPermission을 인쇄합니다 그들은 접근하려고 시도했다.

아이디어가 있으십니까?

감사합니다.

업데이트 : 여기가 핸들 사용자 정의 AccessDeniedHandler의() 메소드가 아닌 컨트롤러 액션을 사용하고 그 답에 작업 코드

<access-denied-handler ref="FooAccessDeniedHandler" /> 
<bean id="FooAccessDeniedHandler" 
    class="my.pkg.AccessDeniedExceptionHandler"> 
    <property name="errorPage" value="/path-to/custom403.jsp" /> 
</bean> 

package my.pkg.AccessDeniedExceptionHandler; 

import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.springframework.security.access.AccessDeniedException; 
import org.springframework.security.web.access.AccessDeniedHandler; 

public final class AccessDeniedExceptionHandler implements AccessDeniedHandler { 

    private String errorPage; 

    @Override 
    public void handle(final HttpServletRequest request, final HttpServletResponse response, final AccessDeniedException arg2) throws IOException, ServletException { 
     System.out.println(String.format("URL [%s] ", request.getServletPath())); 
     response.sendRedirect(getErrorPage()); 
    } 

    public String getErrorPage() { 
     return errorPage; 
    } 

    public void setErrorPage(String errorPage) { 
     this.errorPage = errorPage; 
    } 

}

답변

관련 문제