我正在尝试使用带有 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 入门网站上获取了代码示例。他们有以下代码来注销:WL.Client.logout('LDAPRealm',{onSuccess: WL.Client.reloadApp})。如果我删除 WL.Client.reloadApp 部分,则会出现与我相同的问题:“/apps/services/j_security_check”。
在调用服务器之前,我将 WL.Client.login("LDAPRealm") 放在了 submitForm 中,但它不起作用。
为什么会出现这个问题?重新加载整个应用程序是解决问题的唯一方法吗?因为它不是真正的时间效率...
非常感谢你的帮助。