1

Worklight で LDAP モジュールを使用してアプリケーション ユーザーを認証しようとしています。これは、このクライアント コードで非常にうまく機能しています。

var ldapRealmChallengeHandler = WL.Client.createChallengeHandler("LDAPRealm");

function wlCommonInit(){
    WL.Client.login("LDAPRealm");
}

ldapRealmChallengeHandler.isCustomResponse = function(response) {
if (!response || response.responseText === null) {
    return false;
}
var indicatorIdx = response.responseText.search('j_security_check');

if (indicatorIdx >= 0){
    return true;
}  
return false;
};


ldapRealmChallengeHandler.handleChallenge = function(response){
};

ldapRealmChallengeHandler.submitLoginFormCallback = function(response) {
    var isLoginFormResponse = ldapRealmChallengeHandler.isCustomResponse(response);
    if (isLoginFormResponse){
        ldapRealmChallengeHandler.handleChallenge(response);
    } 
    else {
        ldapRealmChallengeHandler.submitSuccess();
        window.location.hash = "classes";
    }
};

submitLoginForm = function(username, password){
        var reqURL = '/j_security_check';
        var options = {};
        options.parameters = {
            j_username : username,
            j_password : password
        };
        options.headers = {};
        ldapRealmChallengeHandler.submitLoginForm(reqURL, options,   ldapRealmChallengeHandler.submitLoginFormCallback);
    }

logout = function(){
    WL.Client.logout('LDAPRealm',{});
    changePage(loginPage);
}

初めてログインするときは、うまく機能します。ただし、ログアウトしてもう一度ログインしようとすると、「ファイルが見つかりません: /apps/services/j_security_check」というエラーが表示されます。

私はいくつかのことを試しました:

  1. Worklight Getting Started Web サイトでコード・サンプルを取得しました。ログアウトするための次のコードがあります: WL.Client.logout('LDAPRealm',{onSuccess: WL.Client.reloadApp})。WL.Client.reloadApp 部分を削除すると、「/apps/services/j_security_check」と同じ問題が発生します。

  2. サーバーを呼び出す前に WL.Client.login("LDAPRealm") を submitForm に入れましたが、機能しません。

なぜこの問題が起こっているのですか?問題を解決する唯一の方法は、アプリケーション全体をリロードすることですか? 時間効率が悪いから…

どうもありがとうございました。

4

1 に答える 1

0

WL.Client.login の代わりに WL.Client.connect を実行する必要があります。まだ挑戦されていないときにログインしようとしています。

于 2014-05-22T21:59:02.220 に答える