Chinaunix首页 | 论坛 | 博客
  • 博客访问: 266638
  • 博文数量: 34
  • 博客积分: 569
  • 博客等级: 中士
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-10 14:10
文章分类

全部博文(34)

文章存档

2016年(6)

2014年(1)

2013年(5)

2012年(22)

我的朋友

分类: 系统运维

2012-08-22 16:10:53

项目使用了yale大学的 cas进行单点登录

但是必须要扩展登陆信息,譬如增加验证码等,需要对该页面进行修改。

本想修改源代码,将登陆的UsernamePasswordCredentials.java进行替换,增加一个属性,但是发现源代码中关联该bean的内容太多了,就想干脆修改该文件,增加属性即可。左右思量,还是放弃,验证还是在页面就直接处理了就可以了,没必要进行后台的处理。

查看了/WebRoot/WEB-INF/view/jsp/default/ui/casLoginView.jsp,用的东西真复杂。。。。使用了webflow,和各种标签。对于这些暂时没有空去处理,先加入自己的元素吧。

关于跨域访问


  1. function verify(){
  2. var name = $("#username").val();
  3. var code = $("#identifyingcode").val();
  4. var _url = "<%=authPath%>";

  5.    if(code.length==6 && name.length>0){
  6.    $.ajax({
  7.     url: _url,
  8.     type: "GET",
  9.     dataType: "jsonp",
  10.     jsonp: "jsonpCallback",
  11.     crossDomain : true,
  12.     data: {username:name,identifyingcode:code},
  13.     success: function (data){
  14.      var result = data.results;
  15.      if(result){
  16.       $("#identifyingcode").attr("disabled",true);
  17.       $("#submitbtn").attr("disabled",false);
  18.      }
  19.      var msg = result?"成功":"失败,请重新输入6位令牌数字";
  20.      $("#verify").html("动态口令验证"+msg);
  21.     },
  22.        error: function(xhr){
  23.         alert("请求出错(请检查相关度网络状况.)");
  24.     }
  25.    });
  26.   }
  27. }

在DOM中加入

点击(此处)折叠或打开

  1. <div>
  2.     <label for="password" class="fl-label">验证码</label>
  3.     <input id="identifyingcode" name="identifyingcode" tabindex="3"onkeyup="verify()">
  4. </div>
  5. <div>
  6.     <span id="verify"></span>
  7. </div>
                   

使用onkeyup监听输入的验证码,当验证码长度为6位的时候就去访问令牌服务器,校验令牌是否准确。

OK,FF,CHROME调试木有问题,通过,

让BOSS试用,BOSS娴熟的打开360浏览器,发现出现了

娴熟的点了是,发现不需要输入验证码照样可以使用,s-h-i-t

百度了一下,发现该问题就是因为在https的访问页面中包含了http地址,所以IE8就提示了。

于是将页面中所有的引用地址都切换成https协议,IE8提示证书有问题,导入证书之后,OK,以后就不会再有类似的提示了。

悲催的是,在FF中就不行了,FF不会自动检测https的证书,没有导入,所以就不能继续验证令牌。

只能先用土办法了,区分IE和其他浏览器

function verify(){
var name = $("#username").val();
var code = $("#identifyingcode").val();
var _url = "";

var appname = navigator.appName.toLowerCase();
if(appname.indexOf("microsoft")!=-1){
  //ie浏览器需要导入证书
  _url = "<%=authPathSecurity%>";
}else{
  //非ie浏览器可以直接连接请求,若需要使用https连接,也需要导入证书,证书地址即为https的访问地址
  _url = "<%=authPath%>";
}
  if(code.length==6 && name.length>0){
   $.ajax({
    url: _url,
    type: "GET",
    dataType: "jsonp",
    jsonp: "jsonpCallback",
    crossDomain : true,
    data: {username:name,identifyingcode:code},
    success: function (data){
     var result = data.results;
     if(result){
      $("#identifyingcode").attr("disabled",true);
      $("#submitbtn").attr("disabled",false);
     }
     var msg = result?"成功":"失败,请重新输入6位令牌数字";
     $("#verify").html("动态口令验证"+msg);
    },
       error: function(xhr){
        alert("请求出错(请检查相关度网络状况.)");
    }
   });
  }
}

BOSS满意了,交差~~

阅读(1549) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~