SQL适配器身份验证 - Worklight

时间:2013-09-24 12:41:58

标签: mysql ibm-mobilefirst worklight-adapters

我在我正在使用的示例应用中使用适配器身份验证。我在启动时需要登录页面,所以我在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适配器身份验证的示例。所以我别无选择,只能问一个问题。请在这件事上给予我帮助!

1 个答案:

答案 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"};