我在Worklight中有一个登录页面,用于设置Worklight服务器上的活动用户。这将设置一个用户身份。在这个userIdentity中,我保存了一个加密的"用户名:密码"字符串。
每次调用适配器过程时,它都会测试用户是否已登录。当他登录时,将调用该过程。
在后端,我对每个 REST 调用都使用基本身份验证。所以我需要每个调用的标题 ->
Authorization: Basic encrypted(username:password)
当我嘲笑这个时,一切都正常。示例 ->
var input = {
method : 'get',
returnedContentType : 'json',
path : path,
headers:{
Authorization: "Basic "+"dGVzdDp0ZXN0"
}
我需要设置,每次调用过程时,这个"用户名:密码"是来自在工作轻量级服务器中登录的用户的用户名:密码身份。
我该怎么做?
在 IBM Worklight 中授权 HTTP 适配器
在这里他们使用 $( 用户名 ),但我不知道 $ 符号指的是哪里。
认为这是最好的方法,但它对我有用...
wheb 设置一个用户身份,我在用户对象中添加了一个登录字符串。此对象包含我在登录适配器中启动的 var 凭据。
登录字符串 = encode.encode_base64(用户:通过);
用户身份 = {
userID:"01",
displayName: "name",
credentials:loginstring,
teacherId:"212",
}
西城。Server.setActiveUser("AuthRealm", userIdentity);
然后在适配器中,您可以访问 userIdentity-object:
函数 get() {
var user = WL.Server.getActiveUser("AuthRealm");
var input = {
method : 'get',
returnedContentType : 'json',
headers:{
Authorization: "Basic " + user.credentials
},
path : 'path',
};
返回 WL。Server.invokeHttp(input);}
在连接策略中,您只需要:
<authentication>
<basic/>
</authentication>
然后,对于每个过程,请使用:
<procedure name="getFeed" connectAs="endUser"/>
仅当您使用 connectAs="server" 时,才需要 serverIdentity