• 欢迎访问露水湾网站,WordPress信息,WordPress教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • Git主题现已支持滚动公告栏功能,兼容其他浏览器,看到的就是咯,在后台最新消息那里用li标签添加即可。
  • 最新版Git主题已支持说说碎语功能,可像添加文章一样直接添加说说,新建说说页面即可,最后重新保存固定连接,

CAS4.0.4 之自定义登录页实践

技能 dewbay 2年前 (2019-04-12) 588次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

因最近公司要用到cas登陆而且要使用自定登陆页面,网络上搜索了一下cas自定义登陆,比较好的两篇文章 CAS 之自定义登录页实践和 CAS 之 跨域 Ajax 登录实践,感觉写的不错,但是发现改动的地方很多。而且有些说的不是很详细。但是思路可以借鉴一下。

研究了cas整个登陆流程发现只要获取  lt  登录令牌时改变跳转方向就行,

所以修改 login-webflow.xml 文件


添加一个转跳条件


添加 view 视图

最后,再定义一下 view 的页面地址吧,修改 default_views.properties,添加: 

casTicketViewAjax.(class)=org.springframework.web.servlet.view.JstlView
casTicketViewAjax.url=/WEB-INF/view/jsp/custom/ui/ajaxTicket.jsp
jsp 代码如下

<%@ page pageEncoding=”UTF-8″ %>
<%@ page contentType=”text/html; charset=UTF-8″ %>
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core&#8221; %>
var _loginTicket=’${loginTicket}’;
var _flowExecutionKey=’${flowExecutionKey}’;

通过 generateLoginTicketAction 在cas-servlet.xml 这个找到了


修改类 GenerateLoginTicketAction 里的 generate 方法,修改为如下

public final String generate(final RequestContext context) {
final String loginTicket = this.ticketIdGenerator.getNewTicketId(PREFIX);
String ticlet = context.getRequestParameters().get(“ticket”);

    logger.debug("Generated login ticket {}", loginTicket);
    WebUtils.putLoginTicket(context, loginTicket);
    if(ticlet!=null&&ticlet.equals("nbrc")){
        return "generatedTicket";
    }
     return "generated";

}
用于提交数据的 form 表单格式: !–密码–>

添加在 js 添加如下这个

var flushLoginTicket = function(){
var _services = ‘service=’ + encodeURIComponent(‘${localService}/j_spring_cas_security_check’);
var _cas_services = ‘${casService}/login’;
var cas_url=_cas_services+’?’+_services;
$(‘[data-nbrc=”from” ]’).attr(“action”,cas_url)
$.getScript(cas_url+’&ticket=nbrc&n=’+ new Date().getTime(),
function(){
// 将返回的 _loginTicket 变量设置到 input name=”lt” 的 value 中。
$(‘[data-nbrc=”J_LoginTicket”]’).val(_loginTicket);
$(‘[data-nbrc=”J_Execution”]’).val(_flowExecutionKey);
});

说明:

${localService} 为 cas.auth.server=cas 项目 url 地址

${casService}为 cas.local.server=为自己项目 url 地址

效果就不放出来了,本人已经在生产环境中使用过了

蛋疼的 csdn 编辑器

作者:lxyg06
来源:CSDN
原文:https://blog.csdn.net/lxyg06/article/details/51888243
版权声明:本文为博主原创文章,转载请附上博文链接!


露水湾 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:CAS4.0.4 之自定义登录页实践
喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址