2012-09-17 5 views
0

스프링 보안을 설정하려고하는데, 컨트롤러 오류가 발생한 후 로그인 페이지로 전달합니다. 하지만 내 interecept은 ... 그것을 선택하지 않는 것스프링 보안이 로그인 호출을 가로 채지 않습니다.

콘트롤 조각 : 내 XML로

if (validation not successful) { 
    return "login"; 
} 

내가 가진 :

<security:intercept-url pattern="/login*" access="ROLE_USER" /> 

하지만 나는 다음과 같은 오류가 실패 :

The requested resource (/myapp/WEB-INF/jsp/login.jsp) is not available.

로그인을 인터셉트하는 방법은 무엇입니까?

+1

존재하지 않는 뷰 이름 "로그인"을 반환하는 중 오류가 발생했습니다 (즉, 해당 JSP가 없음). Spring Security와는 아무런 관련이 없습니다. 그것은 전적으로 컨트롤러 설정 내에 있으며 Spring Security 필터 체인이 호출 된 후에 발생합니다. –

답변

4

사용자가 아직 로그인하지 않은 경우 그는 ROLE_USER이 없기 때문에 스프링 보안은 /login에 액세스 할 수 없습니다. ,

<http use-expressions="true"> 
    <!-- ... --> 
    <security:intercept-url pattern="/login*" access="permitAll" /> 

플러스의 login.jsp가 /WEB-INF/jsp/login.jsp 아래에 있는지 확인 :

이에 use-expressions="true" to <http> element 변경 차단 선을 추가합니다. 당신이 스프링 시큐리티 3.1을 사용하는 경우,

<http auto-config='true' use-expressions="true"> 
    <intercept-url pattern="/login*" access="permitAll"/> 
    <intercept-url pattern="/**" access="ROLE_USER" /> 
    <!-- use login-page='/login' assuming you've got 
     Spring MVC configured to redirect to login.jsp --> 
    <form-login login-page='/login'/> 
</http> 

또는 :

편집 코멘트 후 :

는 전혀 봄 보안 설정이없는 것처럼 보일 때문에이 시작

:
<http pattern="/login" security="none" /> 
<http auto-config='true'> 
    <intercept-url pattern="/**" access="ROLE_USER" /> 
    <!-- use login-page='/login' assuming you've got 
     Spring MVC configured to redirect to login.jsp --> 
    <form-login login-page='/login'/> 
</http> 

하는 것은 예를 들어 내용 /WEB-INF/jsp/login.jsp 파일을 만듭니다

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<html> 
<head> 
<title>Login Page</title> 
</head> 
<body> 
    <h3>Login</h3> 

    <c:if test="${not empty error}"> 
     <div class="errorblock"> 
      Your login attempt was not successful, try again.<br /> Caused : 
      ${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message} 
     </div> 
    </c:if> 

    <form name='f' action="<c:url value='j_spring_security_check' />" 
     method='POST'> 

     <table> 
      <tr> 
       <td>User:</td> 
       <td><input type='text' name='j_username' value=''> 
       </td> 
      </tr> 
      <tr> 
       <td>Password:</td> 
       <td><input type='password' name='j_password' /> 
       </td> 
      </tr> 
      <tr> 
       <td colspan='2'><input name="submit" type="submit" 
        value="submit" /> 
       </td> 
      </tr> 
     </table> 

    </form> 
</body> 
</html> 

스프링 보안에 대한 자세한 내용은이 프레임 워크의 기본 사항을 참조하십시오.

+0

나는 당신의 말을 이해한다. 나는 로그인 jsp를 가지고 있지 않다. 내가 원했던 것은 스프링 보안 로그인에 JSP 요청을 끼워 넣는 것이었다. 그리고 나서 환영 페이지로 넘어 갔다. – user1555190

+0

나는 .. 그래서 .. 문제는 당신이 Spring Security의 초보자라는 것입니다. [참조 설명서] (http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html) 및 [이 하나]와 같은 자습서 (http : //www.mkyong.com/spring-security/spring-security-form-login-example/)을 참조하십시오. – Xaerxess

+0

내 편집 내용을 보았고 작동 했습니까? – Xaerxess

관련 문제