슈퍼 깨끗하고 올바른 방법인지 확실하지 않지만 내가해온 방법은 쿠키를 사용하는 것입니다.
내가 할 일은 SimpleUrlAuthenticationFailureHandler
을 연장하고 을 사용하여 마지막 인증 예외를 얻고 내 사용자 정의 오류 코드 쿠키를 작성하는 것입니다. 코드는 Scala
에 있지만 매우 간단 다음 CAS server
측면에서 나는 다음과 같은 방법으로 JSP
에 오류를 표시했습니다
class CookieAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler{
val clientErrorCookie = "clientError"
override def onAuthenticationFailure(request: HttpServletRequest, response: HttpServletResponse, exception: AuthenticationException): Unit = {
val authenticationException = SecurityUtility.getSessionAuthException(request).getOrElse(exception)
ClientErrors.values
.filter(clientError => clientError.exceptionClass.equals(authenticationException.getClass))
.foreach(clientError => response.addCookie(new Cookie(clientErrorCookie, clientError.errorCode)))
super.onAuthenticationFailure(request, response, authenticationException)
}
}
다음 :
<c:set var="clientErrorCookie" value="clientError"/>
<c:if test="${cookie.containsKey(clientErrorCookie)}">
<div class="alert alert-danger">
<spring:message code="error.client.authentication.${cookie.get(clientErrorCookie).value}"
text="Client authentication error"/>
</div>
</c:if>
그리고 페이지가로드 된 후 오류가 표시됩니다. 쿠키를 삭제했습니다. JS
:
function deleteCookie(name) {
document.cookie = name + '=; Path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}
$(document).ready(function(){
deleteCookie('${clientErrorCookie}');
}