在 Worklight 6.2 上禁用直接更新不起作用?

Disable direct update on Worklight 6.2 doesn't working?

我在 worklight 6.2 上部署了应用程序,我想禁用 authenticationConfig.xml 的直接更新。 我的 customSecurityTest 看起来像这样:

 <customSecurityTest name="SubscribeServlet">
    <test realm="wl_directUpdateRealm" mode="disabled" step="0"/>
    <test isInternalUserID="true" realm="SubscribeServlet" />
</customSecurityTest>
<customSecurityTest name="AdapterSecurityTest">
    <test realm="wl_directUpdateRealm" mode="disabled" step="0"/>
    <test isInternalUserID="true" realm="AdapterAuthRealm" />
</customSecurityTest>

但应用程序在启动时仍会检查更新。 禁用 模式似乎不起作用。

更新:我已经仔细检查过,它工作正常。

我正在使用 Worklight 6.2.0.01-20150102-1548
我采取的步骤:

  1. 创建了一个新项目和应用程序,并添加了 Android 环境
  2. 在 server\conf\authenticationConfig 中添加了以下自定义安全测试。xml:

    <customSecurityTest name="customTests">
            <test realm="wl_antiXSRFRealm" step="1"/>
            <test realm="wl_remoteDisableRealm" step="1"/>
            <test realm="wl_directUpdateRealm" mode="perSession" step="1"/>
            <test realm="wl_anonymousUserRealm" isInternalUserID="true" step="1"/>
    
  3. 已将安全测试应用于 apps\my-app\application-descriptor 中的环境。xml:

    <android version="1.0" securityTest="customTests">
            <test realm="wl_deviceNoProvisioningRealm" isInternalDeviceID="true" step="2"/>
        </customSecurityTest>
    
  4. 在common\js\main.js中添加,在wlCommonInit()中添加:

    function wlCommonInit(){
        WL.Client.connect({onSuccess: function() {alert("success");}, onFailure: function() {alert("failure");}});
    }
    
  5. 运行 作为 > 运行 在 Worklight Development Server

  6. 运行 作为 > Android 应用程序

应用成功连接到服务器

  1. 已更改 main.js 以显示另一个警报。退出应用程序并重新打开它

显示了第二个警报。

  1. 将警报文本更改为其他文本
  2. 在 authenticationConfig.xml 中将模式从 perSession 更改为 disabled 并保存文件

保存确保服务器将更改考虑在内。
如果您使用的是远程服务器(而不是开发服务器),您必须重新部署 .war 和 .wlapp 文件才能应用更改(!)。

  1. 退出应用程序并重新打开

没有收到直接更新请求,并且显示了与之前相同的第二个警报文本。

也通过将模式从 disabled 改回 perSession 再次验证。退出应用程序并重新打开它 - 在请求直接更新后会显示更新的警报。


以下安全测试名称向我暗示这是您对适配器程序进行的安全测试。

<customSecurityTest name="AdapterSecurityTest">

这不会使应用程序在应用程序启动时不接收直接更新 - 因为您没有在 环境 上进行此安全测试,因此它不会在启动。您只将它放在 adapt 过程中(仅在 WL.Client.invokeProcedure... 期间调用)。

您还必须保护环境本身。再添加一个自定义的"my-security-test"放在application-descriptor.xml

中的environment节点上

例如:

<android version="1.0" securityTest="my-security-test">