我试图让一个修改后的示例项目与 HeaderLoginModule 和 HeaderAuthenticator 一起使用以保护适配器,然后通过设置标头并使用 WLResourceRequest JavaScript API 从示例项目中调用适配器函数。我相信,根据我对 loginModule 的配置,我在其中设置用户名标头值,并将其设置在 WLResourceRequest 的标头中,然后调用 send(),这应该提供用户对象,然后是适配器应该可以访问。出于某种原因,虽然我仍然得到 500 并且日志显示 401/未授权。
以下是我用来设置此示例的步骤:
1) 在https://github.com/MobileFirst-Platform-Developer-Center/Cordova上 git 克隆 Cordova 示例项目
2) 在 authenticationConfig.xml 中添加了以下部分(在适当的部分中)
<loginModule name="HeaderLoginModule" audit="true">
<className>com.worklight.core.auth.ext.HeaderLoginModule</className>
<parameter name="user-name-header" value="plentyid"/>
<parameter name="display-name-header" value="customername"/>
</loginModule>
<realm name="MyRealm" loginModule="HeaderLoginModule">
<className>com.worklight.core.auth.ext.HeaderAuthenticator</className>
</realm>
<mobileSecurityTest name="MyMobileSecurityTest">
<testUser realm="MyRealm" />
<testDeviceId provisioningType="none" />
</mobileSecurityTest>
3) 通过更改适配器 XML 文件中的这一行,使用安全测试保护适配器
<procedure name="getFeed" securityTest="MyMobileSecurityTest"/>
4) 将 getRSSFeed 函数更改如下
getRSSFeed: function(){
var resourceRequest = new WLResourceRequest(
"/adapters/RSSAdapter/getFeed",
WLResourceRequest.GET);
resourceRequest.addHeader("plentyid","1234");
resourceRequest.addHeader("customername","John Smith");
resourceRequest.setHeader("plentyid","1234");
resourceRequest.setHeader("customername","John Smith");
WL.Logger.info(resourceRequest.getHeaders());
resourceRequest.send().then(app.getRSSFeedSuccess,app.getRSSFeedError);
}
** 我会在上面说我无法从文档中判断是 addHeader 还是 setHeader。我分别尝试了两个,然后两个一起尝试。他们似乎是通过查看对 getHeaders() 的调用来设置的。
感谢您在我 mfp 推送 RSSAdapter 项目 (MFP) 和 Cordova 项目 (app) 后单击应用程序中的适配器按钮时找出为什么仍然是 401/未授权的任何帮助。