[SPRING] j_spring_security_logout 호출이 작동하지 않습니다.
SPRINGj_spring_security_logout 호출이 작동하지 않습니다.
j_spring_security_logout을 사용하여 응용 프로그램의 로그온을 설정하려고하지만 어떤 이유로 작동하지 않는 경우 계속 404 오류가 발생합니다.
나는이 함수를 다음과 같이 호출한다.
WebContent / jsp / 내 응용 프로그램 기본 페이지에 있고 로그인 및 로그 아웃 페이지는 WebContent / login /에 있습니다.
나는 Spring 보안의 로그 아웃과 관련된 다른 게시물 문제도 점검했지만 거기에 주어진 해결책은 나를 위해 작동하지 않는다.
여기 내 web.xml을 볼 수 있습니다.
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
그리고 여기 내 spring-security.xml
<http auto-config="true">
<intercept-url pattern="/*" access="ROLE_USER" />
<form-login login-page="/login/login.jsp"
authentication-failure-url="/login/errorLogin.jsp"/>
<logout logout-success-url="/" logout-url="/login/logout.jsp" />
</http>
<beans:bean id="myAuthenticationProvider"
class="myapp.web.authentication.WSAuthenticationProvider">
</beans:bean>
<authentication-manager>
<authentication-provider ref="myAuthenticationProvider"/>
</authentication-manager>
미리 감사드립니다.
해결법
-
==============================
1.logout-url은 가상 URL을 가리키며, 그 이름으로 자원을 가질 필요는 없습니다. 다음 중 하나를 수행 할 수 있습니다.
logout-url은 가상 URL을 가리키며, 그 이름으로 자원을 가질 필요는 없습니다. 다음 중 하나를 수행 할 수 있습니다.
<logout logout-success-url="/" logout-url="/j_spring_security_logout" />
이 페이지의 링크는 다음과 같습니다.
<c:url value="/j_spring_security_logout" var="logoutUrl" /> <a href="${logoutUrl}">Log Out</a>
아니면 이거:
<logout logout-success-url="/" logout-url="/logout" />
링크는 다음과 같습니다.
<c:url value="/logout" var="logoutUrl" /> <a href="${logoutUrl}">Log Out</a>
두 가지를 섞어서 404 오류가 발생하는 이유는 무엇입니까?
-
==============================
2.csrf가 활성화되어 있는지 확인하십시오. csrf가 활성화 된 경우 로그 아웃하려면 post 메소드를 사용해야하고 숨겨진 필드로 csrf 토큰을 추가하십시오. JavaScript를 사용하여 로그 아웃 할 양식 게시
csrf가 활성화되어 있는지 확인하십시오. csrf가 활성화 된 경우 로그 아웃하려면 post 메소드를 사용해야하고 숨겨진 필드로 csrf 토큰을 추가하십시오. JavaScript를 사용하여 로그 아웃 할 양식 게시
-
==============================
3.봄 보안 4 로그 아웃은 양식 버튼을 통해 수행해야합니다. CSRF 토큰을 함께 제출해야합니다. j_spring_security_logout이 더 이상 작동하지 않습니다. 하루를 보낸 후 나는 일하기 위해 다음과 같은 일을했습니다. 1 단계 : JSP 페이지에서
봄 보안 4 로그 아웃은 양식 버튼을 통해 수행해야합니다. CSRF 토큰을 함께 제출해야합니다. j_spring_security_logout이 더 이상 작동하지 않습니다. 하루를 보낸 후 나는 일하기 위해 다음과 같은 일을했습니다. 1 단계 : JSP 페이지에서
<c:url var="logoutUrl" value="/logout"/> <form action="${logoutUrl}" method="post"> <input type="submit" value="Logout"/> <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> </form>
2 단계
<security:http use-expressions="true"> <security:form-login login-page="/login" authentication-failure-url="/login?error=true" /> <security:logout logout-success-url="/login" invalidate-session="true" logout-url="/logout" /> </security:http>
3 단계 로그인 컨트롤러에서
//Logout mapping @RequestMapping("/logout") public String showLoggedout(){ return "logout"; }
4 단계 하나의 logout.jsp가 있어야합니다.
로그 아웃 후에는 로그인 페이지로 넘어갑니다.
<security:form-login login-page="/login" authentication-failure-url="/login?error=true" />
따라서이 로그인 페이지는 login.jsp 또는 컨트롤러에 맵핑 할 맵핑과 일치해야합니다.
-
==============================
4.당신의 컨트롤러가 어떻게 보일 것인가?
당신의 컨트롤러가 어떻게 보일 것인가?
@RequestMapping("/logout") public String logoutUrl(){ return "logout"; }
-
==============================
5.먼저 security-context.xml에 다음 코드를 설정하십시오.
먼저 security-context.xml에 다음 코드를 설정하십시오.
<security:logout logout-success-url="/" invalidate-session="true" />
다음이 코드를 jsp 파일에 추가하십시오.
<script> function formSubmit() { document.getElementById("logoutForm").submit(); } </script> <c:url var="logoutUrl" value="/logout" /> <a href="javascript:formSubmit()"> Logout</a> </li> <form action="${logoutUrl}" method="post" id="logoutForm"> <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> </form>
-
==============================
6.JAVA-BASED Spring MVC 설정에서는 보안 설정 클래스에서 설정해야한다.
JAVA-BASED Spring MVC 설정에서는 보안 설정 클래스에서 설정해야한다.
@Override protected void configure(HttpSecurity http) throws Exception { super.configure(http); http.servletApi().rolePrefix(""); http .logout() .logoutRequestMatcher(new AntPathRequestMatcher("/logout")); }
이 답변은 두 배로 늘었고 내 경우를 위해 노력하고 있습니다. Spring Security Java Config가 로그 아웃 URL을 생성하지 않습니다.
from https://stackoverflow.com/questions/11050840/call-to-j-spring-security-logout-not-working by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 빈 컨텍스트에서 객체의 배열 선언하기 (0) | 2019.02.09 |
---|---|
[SPRING] 오류 : org.springframework.web.HttpMediaTypeNotSupportedException : 'text / plain; charset = UTF-8'콘텐츠 유형이 지원되지 않습니다. (0) | 2019.02.09 |
[SPRING] Spring MVC 컨트롤러 메소드 매개 변수는 어떻게 작동하나요? (0) | 2019.02.09 |
[SPRING] Spring Boot에서 Yaml의 Map 키에서 도트를 이스케이프 처리 (0) | 2019.02.09 |
[SPRING] Java 기반 구성으로 보안 주석을 설정하는 방법은 무엇입니까? (0) | 2019.02.09 |