我在我正在使用的示例应用中使用适配器身份验证。我在启动时需要登录页面,所以我在js文件中使用了WL.Client.Login
这个
function wlCommonInit(){
WL.Client.login("AuthRealm", {onSuccess: winFunction, onFailure: failureFunction});
}
它调用challenger处理程序,并且调用下面的函数
$("#AuthSubmitButton").bind('click', function () {
var username = $("#AuthUsername").val();
var password = $("#AuthPassword").val();
console.log("called");
var invocationData = {
adapter : "Auth",
procedure : "submitAuthentication",
parameters : [username,password ]
};
所以它转到Adapter-impl.js文件,我得到这样的输入..
var auth = WL.Server.createSQLStatement("select * FROM users WHERE Username = ? AND Password = ? ;");
function submitAuthentication(username,password){
return WL.Server.invokeSQLStatement({
preparedStatement :auth,
parameters : [username,password],
});
}
问题是,它在启动时成功显示登录页面,它也会转到适配器文件。我不知道在哪里可以创建用户身份,而WL.Server.setActiveUser("AdapterAuthRealm", userIdentity);
为WL.Server.invokeSQLStatement
不接受{{ 1}}参数。
没有可用于worklight的Sql适配器身份验证的示例。所以我别无选择,只能问一个问题。请在这件事上给予我帮助!
答案 0 :(得分:1)
您不需要只返回sql调用结果。相反,在适配器中使用它来查看身份验证是否成功。 e.g。
var result = WL.Server.invokeSQLStatement(....);
if (result is not empty) {
WL.Server.setActiveUser("realm", userIdentity).
return {authStatus:"success"};
} else
return {authStatus:"failure"};