CAS 3如何自定义登录界面

CAS自定义登录界面的方法有2种:1、直接修改cas\WEB-INF\view\jsp\default\ui\casLoginView.jsp;2. 获得loginTicket、flowExecutionKey后,自定义登录界面。第一种方法安全性较高,但灵活性较低,第二种方法需要在网上传递明文的用户名、密码,安全性较差,但灵活性较高,可以以ajax的方式登录。本文介绍的是第二种方法。

需要准备的环境包括:搭建好的cas环境(可以从其官网下到cas-server-webapp-3.6.0.war包自行部署,包括禁用https);

1. 修改CAS服务端

修改cas\WEB-INF\view\jsp\default\ui\casLoginView.jsp,在第一行(<jsp:directive.include file="includes/top.jsp" />)的前面加入如下代码:

<%  
String action = request.getParameter("action");  
if (action != null && action.equals("getlt")) {
	System.out.println("2&__"+request.getSession().getId());
	String callbackName = request.getParameter("callback");
	String jsonData = "{'lt':'" + request.getAttribute("loginTicket") + "', 'execution':'" + request.getAttribute("flowExecutionKey") + "','sessionid':'"+request.getSession().getId()+"'}";
	String jsonp = callbackName + "(" + jsonData + ")";

	System.out.println(request.getAttribute("loginTicket"));
	System.out.println(request.getAttribute("flowExecutionKey"));

	response.setContentType("application/javascript");
	response.getWriter().write(jsonp);
} else {
%>

在文件的最后加入如下代码:

<%
}
%>

此时,如果你的请求参数中有”action=getlt“这样的参数,网页就会向前台返回loginTicket、flowExecutionKey,然后你就可以用这两个值去登录CAS。

2. 创建自己的登录页面

登录页面很简单,以post的方式向cas发送请求即可,参数包括username、password、loginTicket、flowExecutionKey、_eventId5个。其中_eventId的值是固定的submit另外要注意的是:cas一般是单独部署,因此直接使用ajax会出现跨域问题,所以这里使用jsonp的方式来获取loginTicket和flowExecutionKey。整个页面代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
  <body>
	<form id="fi" method="post" action="http://localhost:8081/cas/login">
		用户名:<input name="username" value="admin"><br>
		密码:<input name="password" value="admin"><br>
		loginTicket:<input id="lt" class="lt" name="lt" type="text"><br>
		flowExecutionKey:<input id="execution" class="execution" name="execution" type="text"><br>
		_eventId:<input name="_eventId" value="submit" />
	</form>
		<input type="button" οnclick="doLogin()" value="cas">
  </body>
</html>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function doLogin(){
   $.ajax({
        url:"http://localhost:8081/cas/login?action=getlt&callback=?",   
        dataType:"jsonp",
        success:function(data){
        	$("#lt").val(data.lt)
        	$("#execution").val(data.execution)
        	$("#fi").submit();
        }
   });
}
</script>

下面是登录页面和登录后的截图

此方法仅适用于3.x的CAS,4.x不知为何登录可以成功,但是登陆后再刷新会报错。

参考文献:

http://blog.csdn.net/just_lion/article/details/39316169

https://wiki.jasig.org/display/CAS/Using+CAS+without+the+CAS+login+screen

https://web.ask.byu.edu/question/307/cas-authentication-with-javascript/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值