1

我们的一个 XPages 应用程序的登录模块有一点问题。

我们使用来自http://www.qtzar.com/dslh-7qpr7x/的 XPages 登录模块作为基础。登录模块在所有浏览器中都可以正常工作,甚至是移动设备(版本略有不同),但它在 Chrome 中不起作用。在 Chrome 中,我看到登录成功的图标,但重新加载后,什么都没有发生,我没有登录。

我们已经测试了很多变体,目前我们已经将 AJAX 方法 vom Dojo 切换到 JQuery,但这也没有改变任何东西。

这是当前的源代码:

<xc:bcc_basic_user
    loaded="${javascript: getUserRoles.indexOf('Admin')==-1}"
    rendered="#{javascript:isLoggedIn;}" />

<xc:bcc_basic_admin
    loaded="${javascript: getUserRoles.indexOf('Admin')!=-1}"
    rendered="#{javascript:isLoggedIn;}" />

<!--
    The following methods for user log in are taken from or based on
    http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=XPages%20Sliding%20Login%20Custom%20Control#
    and underly the Apache License For more information on how this works
    see: http://www.qtzar.com/blog/dslh-7qps3g/
-->

<xp:scriptBlock id="loginScript" type="text/javascript">
    <xp:this.value>
        <![CDATA[
            function doLogin() {
                var username = dojo.byId("#{id:cc_login_panel_login_username}").value;
                var password = dojo.byId("#{id:cc_login_panel_login_password}").value;
                if (username!=null && username.length>0 && password!=null && password.length>0) {
                    dojo.style("#{id:cc_login_panel_login_failed}","display","none");
                    dojo.style("#{id:cc_login_panel_login_notauth}","display","none");
                    dojo.style("#{id:cc_login_panel_login_wait}","display","block");

                    var postData = {
                        "username" : username,
                        "password" : password,
                        "RedirectTo": "#{javascript:BCCJSFUtils.getDatabasePath(false)}/img/waiting.gif"
                    };

                    $.ajax({
                        url: '#{javascript:session.getServerName()}/names.nsf?Login',
                        data: postData,
                        type: 'POST',
                        async: false,
                        cache: false,
                        success: function (data) {
                            alert("onComplete");
                            if(String(data).substring(0,3).toUpperCase() == "GIF") {
                                dojo.style("#{id:cc_login_panel_login_wait}","display","none");
                                dojo.style("#{id:cc_login_panel_login_success}","display","block");
                                var url = window.location.href;
                                if (url.indexOf(".xsp")==-1) {
                                    if (url.substring(url.length-1,url.length)!='/') {
                                        url += '/';
                                    }
                                    url += "#{javascript:getLandingPage}";
                                }
                                if (url.indexOf('?')!=-1) {
                                    url += "&doRefresh=true";
                                } else {
                                url += "?doRefresh=true";
                                }                           
                                window.location.href = url;
                                return false;
                            } else {
                                if (dojo.cookie('DomAuthSessId') != null || dojo.cookie('LtpaToken') != null) {
                                    dojo.style("#{id:cc_login_panel_login_wait}","display","none");
                                    dojo.style("#{id:cc_login_panel_login_notauth}","display","block");
                                    dojo.cookie('DomAuthSessId', null, { path: '/', domain: 'bcc.biz' });
                                    dojo.cookie('LtpaToken', null, { path: '/', domain: 'bcc.biz' });                                           
                                } else {
                                    dojo.style("#{id:cc_login_panel_login_wait}","display","none");
                                    dojo.style("#{id:cc_login_panel_login_failed}","display","block");                                          
                                }

                               }                                    
                            },
                            error: function (error) {
                                alert("onError");
                                console.error ('Error: ', error);
                                //IE Has An Issue with returning binary data in AJAX so just reload the page.
                                console.error ('Possibly Running IE - Reloading Page Anyway');                              
                                var url = window.location.href;
                                if (url.indexOf(".xsp")==-1) {
                                    if (url.substring(url.length-1,url.length)!='/') {
                                        url += '/';
                                    }
                                    url += "#{javascript:getLandingPage}";
                                }
                                if (url.indexOf('?')!=-1) {
                                    url += "&doRefresh=true";
                                } else {
                                    url += "?doRefresh=true";
                                }                                   
                                window.location.href = url; 
                                return false;
                            }
                        });
                    }
                }]]>
    </xp:this.value>
</xp:scriptBlock>

<xp:div styleClass="btn-group pull-right" rendered="${javascript:!isLoggedIn}">
    <xp:panel id="cc_login_panel_login_content">

        <xp:inputText id="cc_login_panel_login_username"
            styleClass="span2">
            <xp:eventHandler event="onkeypress" submit="false">
                <xp:this.script><![CDATA[
                    if (thisEvent.keyCode!=13) {
                        return false;
                    } else {                                
                        doLogin();                              
                    }]]>
                </xp:this.script>
            </xp:eventHandler>
        </xp:inputText>

        <xp:inputText id="cc_login_panel_login_password"
            styleClass="span2" password="true">
            <xp:eventHandler event="onkeypress" submit="false">
                <xp:this.script><![CDATA[
                    if (thisEvent.keyCode!=13) {
                        return false;
                    } else {                                
                        doLogin();                              
                    }]]>
                </xp:this.script>
            </xp:eventHandler>
        </xp:inputText>

        <xp:button value="${basicLang['LOGIN']}" id="cc_login_panel_login_button"
            styleClass="btn pull-right" style="font-weight:bold;margin-left:4px;">
            <xp:eventHandler event="onclick" submit="false">
                <xp:this.script><![CDATA[doLogin();]]></xp:this.script>
            </xp:eventHandler>
        </xp:button>
    </xp:panel>

    <xp:panel id="cc_login_panel_login_wait" style="display:none;">
        <ul class="login-info navbar-background" style="width:100%;">
            <li>
                <span>
                    <xp:image url="img/waiting.gif" id="image1" height="16"
                        width="16" />
                </span>
            </li>
            <li>
                <xp:text value="${basicLang['CHECKING_CREDENTIALS']}" id="label2"
                    styleClass="text-info" style="padding: 0px 5px; font-weight: bold;" tagName="div" />
            <br />
                <xp:text value="${basicLang['PLEASE_WAIT']}" id="label1" style="padding: 0px 5px;"
                    tagName="div" />
            </li>
        </ul>
    </xp:panel>
    <xp:panel id="cc_login_panel_login_success" style="display:none;">
        <ul class="login-info navbar-background" style="width:100%;">
            <li>
                <span>
                    <i class="icon-ok" />
                </span>
            </li>
            <li>
                <xp:text value="${basicLang['LOGIN_SUCCESSFUL']}" id="label4"
                    styleClass="text-success" style="padding: 0px 5px; font-weight: bold;" tagName="div" />
            </li>
        </ul>
    </xp:panel>
    <xp:panel id="cc_login_panel_login_failed" style="display:none;">
        <ul class="login-info navbar-background" style="width:100%;">
            <li>
                <span>
                    <i class="icon-remove" />
                </span>
            </li>
            <li>
                <xp:text value="${basicLang['LOGIN_FAILED']}" id="label3"
                    styleClass="text-warning" style="padding: 0px 5px; font-weight: bold;" tagName="div" />
            </li>
        </ul>
    </xp:panel>
    <xp:panel id="cc_login_panel_login_notauth" style="display:none;">
        <ul class="login-info navbar-background" style="width:100%;">
            <li>
                <span>
                    <i class="icon-ban-circle" />
                </span>
            </li>
            <li>
                <xp:text value="${basicLang['NOT_AUTHORIZED']}" id="label6"
                    styleClass="text-warning" style="padding: 0px 5px; font-weight: bold;" tagName="div" />
            </li>
        </ul>
    </xp:panel>
</xp:div>

我们已经在另一台服务器上测试了代码,有趣的是,在这台服务器上它甚至可以在 Chrome 中运行......我们已经寻找了服务器之间的差异。我们看到在第一台服务器上(它不起作用)将“登录时强制 SSL”设置为 true,但是当我们将其设置为 false 时它并没有改变任何东西。另一个区别是第一个服务器是 Domino 9 服务器,而它工作的服务器是 8.5.2 服务器。

你知道那里会出什么问题吗?我现在正试图让它工作两天,但我想不出可能是什么原因导致这个问题。正如我所说,在所有浏览器中它都可以正常工作,除了 Chrome。但它适用于 Chrome 中的另一台服务器。

如果您需要更多信息,我会发布它们。

提前致谢。

4

1 回答 1

0

好的......问题是fu......已修复......我浪费了将近2个工作日,因为fu...... Chrome无法正确删除他的fu...... cookie......我已经删除了我的cookie通过浏览器选项“删除所有浏览器数据”这次我通过我的 Web 开发人员工具删除了它们......现在它可以......

不敢相信这个......

但是那里出了什么问题?为什么我无法登录只是因为 cookie 没有被删除?

于 2013-06-18T11:14:54.937 回答