jquery ajax调用和j_security重定向

时间:2011-01-27 14:47:38

标签: javascript jquery ajax websphere

使用Jquery(最新),IBM WebSphere 6.1 Server,Java JDK 1.5

对于AJAX调用有点挑剔。我的所有AJAX调用都是URL,这些URL是我的web.xml安全约束的一部分,需要进行身份验证。身份验证是基于标准格式的j_security,因此在对安全/受保护URL的每个请求中,容器(WebSphere)将拦截该调用并查看身份验证是否良好以及如果身份验证不正确,它将自动重定向到登录页面。我认为非常简单/标准和预期。

看看以下代码。无论客户端的身份验证状态(经过身份验证,未经过身份验证,超时),对该URL的GET调用(或发布,无关紧要)总是返回200.因此,确实没有任何简单的方法来判断我们是否是是否重定向,除非我们评估服务器返回的数据。

也许我错过了什么?这看起来真的很复杂。我发现看到j_security重定向的唯一可靠方法是从服务器获取数据并执行dom搜索j_password字段。但这似乎效率很低,因为我必须为我的应用程序中的每个 AJAX调用做些什么。我们的一些AJAX调用是返回JSON的URL,有些返回HTML。

    $.ajax({
        type: 'GET',
        url: '<c:url value="/secure/supersecretthingy.html"/>',
        dataType: 'html',
        data:{
            requestDate: requestDate
        },
        beforeSend: function(request) {
        },
        complete: function(request) {
        },           
        success: function(data, textStatus, response) {
            var ll = $('<div id="#wee" class=""></div>').html(data).find("#j_password").length;
            //console.log(ll);
            $("#wee").remove();
            if ( ll != 0) {
                //console.log('we timed out says websphere!');
                window.location = '<c:url value="${GLOBAL_AJAX_TIMEOUT_PAGE}" />';
            } else {           
                //console.log("not timed out");
                dialogDiv.html(data);
            }   
          },
          error: function(xhr, textStatus, errorThrown) {   
              //console.log(errorThrown);
          }
    });   

1 个答案:

答案 0 :(得分:2)