Ibm mobilefirst 结合身份验证和Java SQL适配器的MobileFirst 7.0失败

Ibm mobilefirst 结合身份验证和Java SQL适配器的MobileFirst 7.0失败,ibm-mobilefirst,mobilefirst-adapters,Ibm Mobilefirst,Mobilefirst Adapters,我正在尝试结合基于适配器的身份验证 我想在经过身份验证后获取用户列表,但失败了 在服务器端,基于适配器的身份验证,AuthenticationAdapter impl.js function onAuthRequired(headers, errorMessage) { errorMessage = errorMessage ? errorMessage : null; return { authRequired: true, errorMessage: errorMe

我正在尝试结合基于适配器的身份验证

我想在经过身份验证后获取用户列表,但失败了

在服务器端,基于适配器的身份验证,
AuthenticationAdapter impl.js

function onAuthRequired(headers, errorMessage) {
  errorMessage = errorMessage ? errorMessage : null;

  return {
    authRequired: true,
    errorMessage: errorMessage
  };
}

function submitAuthentication(username, password){

  if (username==="admin" && password === "admin"){

    var userIdentity = {
      userId: username,
      displayName: username, 
      attributes: {
        foo: "bar"
      }
    };

    WL.Server.setActiveUser("AdapterAuthRealm", userIdentity);

    return { 
      authRequired: false 
    };
  }

  return onAuthRequired(null, "Invalid login credentials");
}


function listUsers() {
  var resourceRequest = new WLResourceRequest("/adapters/UserAdapter/", WLResourceRequest.GET);
  return resourceRequest.send();
}

function onLogout() {
  WL.Server.setActiveUser("AdapterAuthRealm", null);
  WL.Logger.debug("Logged out");
}
在客户端

function listUsers(){
  busyIndicator.show();
  var invocationData = {
    adapter : "AuthenticationAdapter",
    procedure: "listUsers",
    parameters: []
  };

  WL.Client.invokeProcedure(invocationData, {
    onSuccess: listUsersSuccess, 
    onFailure: listUsersFailure
  });
}

function listUsersSuccess(result){
  WL.Logger.debug("Feed retrieve success");
  busyIndicator.hide();
  WL.Logger.debug(JSON.stringify(result));
  if (result.responseJSON.length > 0){ 
    displayUsers(result.responseJSON);
  } else {
    listUsersFailure();
  }
}

function listUsersFailure(result){
  WL.Logger.error("Feed retrieve failure");
  busyIndicator.hide();
  WL.SimpleDialog.show("Banking Application", "Service not available. Try again later.", [
    {
      text : 'Reload',
      handler : WL.Client.reloadApp 
    },
    {
      text: 'Close',
      handler : function() {}
    }
  ]);
}
它返回
onFailure
响应


WLResourceRequest
是客户端API,因此您不能在适配器上使用它,因为适配器在服务器上运行

您应该更新
listUsers
函数(客户端),如下所示:

function listUsers(){
  busyIndicator.show();

  var resourceRequest = new WLResourceRequest("/adapters/UserAdapter/", WLResourceRequest.GET);

  resourceRequest.send().then(listUsersSuccess).fail(listUsersFailure);
}
更新

您可以使用
@OAuthSecurity
注释来保护Java适配器方法

UserAdapter.java

@GET
@Path("/protectePath")
@OAuthSecurity(scope="YourRealm")
public String myProtectedMethod() {
    // your code here
    return "your-response";
}

添加故障响应?是否添加身份验证适配器实现?添加您的质询处理程序?有没有办法通过身份验证获取用户列表?我正在尝试组合这两个适配器,但java sql适配器需要使用WLResourceRequest我尝试使用@OAuthSecurity,但它不起作用,您能看到我的新问题吗