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」というエラーが表示されます。
私はいくつかのことを試しました:
Worklight Getting Started Web サイトでコード・サンプルを取得しました。ログアウトするための次のコードがあります: WL.Client.logout('LDAPRealm',{onSuccess: WL.Client.reloadApp})。WL.Client.reloadApp 部分を削除すると、「/apps/services/j_security_check」と同じ問題が発生します。
サーバーを呼び出す前に WL.Client.login("LDAPRealm") を submitForm に入れましたが、機能しません。
なぜこの問題が起こっているのですか?問題を解決する唯一の方法は、アプリケーション全体をリロードすることですか? 時間効率が悪いから…
どうもありがとうございました。