バックエンドと通信するカスタム Worklight オーセンティケーターを作成することをお勧めします。カスタム認証システムのドキュメントは、次の場所にあります。
http://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v600/08_04_Custom_Authenticator_and_Login_Module.pdf
あなたの質問に答えるために、カスタム認証システムを使用せずにアプローチする方法を次に示します。
- クライアントから認証するためのアダプター呼び出しを行う
関数認証(ユーザー名、パスワード){
var invocationData = {
adapter : 'authenticationAdapter',
procedure : 'authenticate',
parameters : [username, password]
};
WL.Client.invokeProcedure(invocationData, {
onSuccess : authSuccess,
onFailure : authFailure
});
}
- クライアント側の応答から Cookie を取得して保存します (保存された Cookie を暗号化できる JSONStore を使用して保存することをお勧めします)。
function authSuccess(response){
console.log("Auth Success");
var myCookie = response.invocationResult.responseHeaders.CookieName
// Save cookie somehow
}
- 後続のアダプター呼び出しで、各要求とともにクライアントから Cookie を送信します。
関数 adapterRequestForProtectedResource(){
var mySecureCookie = getMyCookieFromLocalStorage();
var invocationData = {
adapter : 'protectedResourceAdapter',
procedure : 'getResource',
parameters : [mySecureCookie]
};
WL.Client.invokeProcedure(invocationData, {
onSuccess : success,
onFailure : failure
});
}
アダプターで、ヘッダーに Cookie を設定します
関数 getResource(secureCookie) {
// Secure cookie must be of the form: "CookieName=cookievalue"
var input = {
method : 'get',
returnedContentType : 'json',
path : "/resource",
headers: {"Cookie": secureCookie}
};
return WL.Server.invokeHttp(input);
}