【SSO单点系列】(4):CAS4.0 之非Ajax-iframe 登录
一、描述
不使用Ajax-iframe 登录 仍然要自定义页面
二、思路:
将数据提交给服务器登录页面,服务登录页面自动提交。
三、实现
1、客户端
<form name="loginform" id="loginform" action="http://www.myCas.com:18080" method="get" > <input type="hidden" name="auto" value="true" /> <input type="hidden" name="service" value="http://www.myApp5.com:8088/jeeadmin/jeecms/myLoginSSO.do" /> <input type="hidden" name="loginUrl" value="http://www.myApp5.com:8088/jeeadmin/jeecms/login.do" /> <div class="form"> <div class="input-group"> <label class="n">用户名:</label> <input class="q" type="text" name="username" id="j_username" value="" size="25" placeholder="请输入用户名"> </div> <div class="input-group"> <label class="n">密码:</label> <input class="q" onfocus="this.type='password'" autocomplete="off" name="password" id="j_password" value="" size="25" placeholder="请输入密码" > </div> <div class="input-group"> <input class="c" type="checkbox" id="remember" name="rememberMe" value="1"> 记住用户名称 </div> <div class="input-group"> <input type="submit" value="登 录"class="b"/> </div> </div> </form>
客户传入auto表示自动提交方式
2、服务端
登录页面修改casLoginView.jsp
<%@ page pageEncoding="UTF-8"%> <jsp:directive.include file="includes/top.jsp" /> <% String a= request.getParameter("username") ; String utf8 =""; if(a!=null){ utf8 = new String(a.getBytes("iso-8859-1"), "utf-8"); } String auto = request.getParameter("auto"); if (auto != null && auto.equals("true")) { %> <html> <head> <script language="javascript"> function doAutoLogin() { document.forms[0].submit(); } </script> </head> <body onload="doAutoLogin();"> <form id="credentials" method="POST" action="<%= request.getContextPath() %>/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="<%= utf8 %>" /> <input type="hidden" name="password" value="<%= request.getParameter("password") %>" /> <input type="hidden" name="loginUrl" value="<%= request.getParameter("loginUrl") %>" /> <% if ("true".equals(request.getParameter("rememberMe"))) {%> <input type="hidden" name="rememberMe" value="true" /> <% } %> <input type="submit" value="Submit" style="visibility: hidden;" /> </form> </body> </html> <% } else { %> <!------- -*****************************--------------> <c:if test="${not pageContext.request.secure}"> <div id="msg" class="errors"> <h2>Non-secure Connection</h2> <p>You are currently accessing CAS over a non-secure connection. Single Sign On WILL NOT WORK. In order to have single sign on work, you MUST log in over HTTPS.</p> </div> </c:if> <!------- -**************些处省略***************--------------> <% } %> <jsp:directive.include file="includes/bottom.jsp" />