복붙노트

[SPRING] intercept-url 패턴 / ** 404 오류 발생

SPRING

intercept-url 패턴 / ** 404 오류 발생

나는 여기에서 구글과 스프링 소스를 검색했고 나에게 도움이되는 해결책을 찾을 수 없었다. 나는 아래 spring-security.xml을 가지고 있으며 패턴을 사용할 때

로그인 페이지로 리다이렉트하면 404 오류가 발생합니다. 하지만 내가 사용하면 이런 일은 일어나지 않는다.

하지만 분명히이 앱의 나머지 부분을 보호하지는 못합니다.

이것은 내가 간과하고있는 간단한 것이라고 확신하지만, 내가 발견 할 수있는 가장 가까운 것은이 스택 오버 플로우 문제였다. 나는이 문제를 이미 아래 XML 파일에 포함 시켰지만 여전히 같은 문제가있다. 내가 사용 - 표현 = "사실"없이 시도하고 가로 채기 URL을 주위 (나는 100 % 아니에요하지만 나는 / ** 패턴은 내가 URL을 믿는 마지막이어야한다고 확신 해요. 신고 된 것과 동일한 순서로 일치 함)

모든 조언 / 도움은 훌륭 할 것입니다.

spring-security.xml

<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security-3.0.3.xsd">

    <http auto-config="true" use-expressions="true">
        <intercept-url pattern="/login" filters="none" access="permitAll" />
        <intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
        <form-login login-page="/login" default-target-url="/welcome"
            authentication-failure-url="/loginfailed" />
        <logout logout-success-url="/logout" />
    </http>

    <authentication-manager>
      <authentication-provider>
        <user-service>
            <user name="username" password="password" authorities="ROLE_USER" />
        </user-service>
      </authentication-provider>
    </authentication-manager>

</beans:beans>

단지 그것이 스프링과 스프링 보안 3.0.4를 사용하고있는 요소라면.

Kris의 충고에 이어 내가 바꿨다.

<intercept-url pattern="/login" filters="none" access="permitAll" />

에:

<intercept-url pattern="/login" access="IS_AUTHENTICATED_ANONYMOUSLY" />

이로 인해 예외로 인해 500 오류가 발생했습니다.

    SpelEvaluationException: EL1008E:(pos 0): Field or property
     'IS_AUTHENTICATED_ANONYMOUSLY' cannot be found on object of 
type'org.springframework.security.web.access.expression.WebSecurityExpressionRoot

IS_AUTHENTICATED_ANONYMOUSLY를 isAnonymous ()로 변경하여이 문제를 해결했습니다.

<intercept-url pattern="/login" access="isAnonymous()" />

해결법

  1. ==============================

    1.이것을 변경하십시오.

    이것을 변경하십시오.

    <intercept-url pattern="/login" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    
  2. ==============================

    2.완전성을 위해 isAnonymous ()에 대한 변경이 필요한 실제 이유는 다음과 같습니다.

    완전성을 위해 isAnonymous ()에 대한 변경이 필요한 실제 이유는 다음과 같습니다.

    요소에는 use-expressions 속성이 있습니다.이 속성의 기본값은 true입니다. 기본 상황에서는 역할 이름 대신 "보안 표현식"을 사용해야합니다. access = declarations에서 역할 이름 만 사용하려면 다음과 같이 표현식을 해제해야합니다.

    <http use-expressions="false"> ... </http>
    
  3. ==============================

    3.AnonymousAuthenticationFilter를 스택 및 AnonymousAuthenticationProvider에 추가합니다. IS_AUTHENTICATED_ANONYMOUSLY 특성을 사용하는 경우 필요합니다. 봄철

    AnonymousAuthenticationFilter를 스택 및 AnonymousAuthenticationProvider에 추가합니다. IS_AUTHENTICATED_ANONYMOUSLY 특성을 사용하는 경우 필요합니다. 봄철

    대신 isAnonymous ()를 사용하십시오.

  4. ==============================

    4.구성은 나에게 잘 보인다. / login 페이지가 실제로 존재하지 않을 수 있습니까? 두 번째 구성 (/ index * 포함)은 작동 한 것일 수도 있습니다. 요청한 내용이 가로 챌 수 없으므로 존재하지 않는 / 로그인 페이지에 다시 적용되지 않기 때문입니다. config에 문제가 있다면, Spring Security는 404가 아닌 403으로 응답합니다.

    구성은 나에게 잘 보인다. / login 페이지가 실제로 존재하지 않을 수 있습니까? 두 번째 구성 (/ index * 포함)은 작동 한 것일 수도 있습니다. 요청한 내용이 가로 챌 수 없으므로 존재하지 않는 / 로그인 페이지에 다시 적용되지 않기 때문입니다. config에 문제가 있다면, Spring Security는 404가 아닌 403으로 응답합니다.

    / login url이 작동하면 스프링 보안이 설정되지 않은 상태에서 다시 확인하십시오.

  5. from https://stackoverflow.com/questions/15157250/intercept-url-pattern-causing-404-error by cc-by-sa and MIT license