Redirect CAS-凭据错误时重定向到自定义登录页
早上好 我已成功配置CAS SSO服务器和客户端。但是,我想更改CAS的配置以使用自定义登录页面。我按照教程做了这样的配置,它工作起来很有魅力。但是,问题是,当我输入无效凭据(错误的用户名或密码)时,它试图重定向到CAS的默认登录页面;但是,它应该重定向到自定义外部登录页面。如果您能帮助我了解如何使CAS在输入错误凭据时重定向到其他页面,我将不胜感激 这是我的casLoginView.jspRedirect CAS-凭据错误时重定向到自定义登录页,redirect,single-sign-on,cas,Redirect,Single Sign On,Cas,早上好 我已成功配置CAS SSO服务器和客户端。但是,我想更改CAS的配置以使用自定义登录页面。我按照教程做了这样的配置,它工作起来很有魅力。但是,问题是,当我输入无效凭据(错误的用户名或密码)时,它试图重定向到CAS的默认登录页面;但是,它应该重定向到自定义外部登录页面。如果您能帮助我了解如何使CAS在输入错误凭据时重定向到其他页面,我将不胜感激 这是我的casLoginView.jsp <%@ page contentType="text/html; charset=UTF-8" %
<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<script type="text/javascript">
function doAutoLogin() {
document.forms[0].submit();
}
</script>
</head>
<body onload="doAutoLogin();">
<form id="credentials" method="POST" action="https://externalsite.com/cas-server-webapp-4.0.0/login?service=<%= request.getParameter("service") %>">
<input type="hidden" name="lt" value="${loginTicket}" />
<input type="hidden" name="execution" value="${flowExecutionKey}" />
<input type="hidden" name="_eventId" value="submit" />
<input type="hidden" name="username" value="<%= request.getParameter("username") %>" />
<input type="hidden" name="password" value="<%= request.getParameter("password") %>" />
<% if ("true".equals(request.getParameter("rememberMe"))) {%>
<input type="hidden" name="rememberMe" value="true" />
<% } %>
<input type="submit" value="Submit" style="visibility: hidden;" />
</form>
</body>
函数doAutoLogin(){
document.forms[0]。提交();
}
这是我的外部自定义登录页面:
<form method="GET" action="https://externalsite.com/cas-server-webapp-4.0.0/">
<p>Username : <input type="text" name="username" /></p>
<p>Password : <input type="password" name="password" /></p>
<p>Remember me : <input type="checkbox" name="rememberMe" value="true" /></p>
<p><input type="submit" value="Login !" /></p>
<input type="hidden" name="auto" value="true" />
<input type="hidden" name="service" value="<%= request.getParameter("service") %>" />
</form>
用户名:
密码:
记住我:
基本上,我的外部登录页面将凭据发送到CAS登录页面,后者将自动提交。但是,当凭据错误时,CAS将重定向到默认登录页,而不是我的外部登录页
问候。我通过更改login-webflow.xml文件上的转换解决了我的问题。我所做的是创建一个新的动作状态:
<action-state id="customFailedLogin">
<evaluate expression="generateLoginTicketAction.generate(flowRequestContext)" />
<transition on="generated" to="externalRedirection" />
</action-state>
这个调用一个视图状态,它将用户重定向到我的外部登录页面
<view-state id="externalRedirection" view="externalRedirect:#{requestParameters.callingUrl}&error=true"/>
(callingUrl是我创建并与服务url一起发送的一个变量)。最后,我刚刚更改了HandleaAuthenticationFailure中的转换
<transition on="AccountNotFoundException" to="customFailedLogin"/>
<transition on="FailedLoginException" to="customFailedLogin"/>
希望对其他人有所帮助。您需要更改cas server webapp中login-webflow.xml的代码。 代码应更改如下:
<action-state id="handleAuthenticationFailure">
<!-- Comment FailedLoginException and AccountNotFoundException -->
<!--<transition on="FailedLoginException" to="generateLoginTicket"/>-->
<!--<transition on="AccountNotFoundException" to="generateLoginTicket"/>-->
</action-state>
您可以通过显示一些相关代码来吸引更多的响应谢谢,我添加了一些相关代码。
<action-state id="customFailedLoginException">
<evaluate expression="generateLoginTicketAction.generate(flowRequestContext)" />
<transition on="generated" to="customFailedLoginExceptionView" />
</action-state>
<view-state id="customFailedLoginExceptionView" view="externalRedirect:#{requestParameters.service}&errorMsg=failedLogin"/>
<action-state id="customAccountNotFoundException">
<evaluate expression="generateLoginTicketAction.generate(flowRequestContext)" />
<transition on="generated" to="customAccoundNotFoundExceptionView" />
</action-state>
<view-state id="customAccoundNotFoundExceptionView" view="externalRedirect:#{requestParameters.service}&errorMsg=notFound" />