2015-04-17 80 views
-1

我試着結合Java UserAdapter和適配器的身份驗證MobileFirst 7.0鑑別與Java的SQL適配器發生故障

我想要得到的用戶列表驗證之後,但它無法

在服務器端,適配器 - 基於身份驗證,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響應

+0

添加失敗響應?添加身份驗證適配器實施?添加你的挑戰處理器? –

+0

我剛剛加了 – BraveWolf

回答

0

WLResourceRequest是一個客戶端API,所以你CAN NOT由於適配器在服務器上運行使用它的適配器上。

應當更新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"; 
} 
+0

有沒有什麼辦法可以通過驗證來獲取用戶列表? – BraveWolf

+0

即時通訊試圖結合這兩個適配器,但java-sql的適配器需要使用WLResourceRequest – BraveWolf

+0

檢查如何保護您的適配器與領域的更新 –