1

我在 Worklight 中有一个登录页面,用于在 Worklight 服务器上设置活动用户。这设置了一个用户身份。在这个用户身份中,我保存了一个加密的“用户名:密码”字符串。

每次调用适配器过程时,它都会测试用户是否已登录。当他登录时,将调用该过程。

在后端,我对每个 REST 调用都使用基本身份验证。所以我需要在每个电话的标题中->

    Authorization: Basic  encrypted(username:password)

当我嘲笑这个时,一切正常。示例->

    var input = {
    method : 'get',
    returnedContentType : 'json',
    path : path,
     headers:{
            Authorization: "Basic "+"dGVzdDp0ZXN0"
        }

我需要设置,每次调用过程时,此“用户名:密码”是登录工作灯服务器的用户的用户身份中的用户名:密码。

我怎样才能做到这一点?


在 IBM Worklight 中授权 HTTP 适配器

这里他们使用 $( username ),但我不知道 $ 符号指的是哪里。

4

2 回答 2

1

我认为这不是最好的方法,但它对我有用......

wheb 设置 userIdentity 我在用户对象中添加了一个 loginString。此对象包含我在登录适配器中启动的 var 凭据。

loginstring = encode.encode_base64(user:pass);

用户身份 = {

    userID:"01",
    displayName: "name",
    credentials:loginstring, 
    teacherId:"212",

}

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

然后在适配器中,您可以访问 userIdentity-object:

函数获取(){

var user = WL.Server.getActiveUser("AuthRealm");
var input = {
    method : 'get',
    returnedContentType : 'json',
    headers:{
        Authorization: "Basic " + user.credentials
    },
    path : 'path',
};

返回 WL.Server.invokeHttp(输入); }

于 2013-11-14T09:06:05.447 回答
0

在您的连接策略中,您只需要:

        <authentication>
            <basic/>
        </authentication>  

然后对于您的每个程序,使用:

<procedure name="getFeed" connectAs="endUser"/>

如果您使用的是 connectAs="server",则只需要 serverIdentity

于 2013-11-12T15:36:23.337 回答