gpt4 book ai didi

ibm-mobilefirst - Worklight 注销不会清除事件用户

转载 作者:行者123 更新时间:2023-12-04 07:19:24 25 4
gpt4 key购买 nike

我正在使用 Worklight 6.1 并使用挑战处理程序来确定我的用户是否已登录。

登录后,我将以下代码附加到我的应用程序中的注销按钮:

on(logoutBtn, "click", lang.hitch(this, function() {
WL.Client.logout('AdapterAuthRealm', { onSuccess:lang.hitch(this, function() {
this.gotoView("login");
}), onFailure:lang.hitch(this, function() {
WL.Logger.error("Unable to logout");
})});
return false;
}));

单击它会打开登录 View ,但是当用户再次尝试登录时,会显示以下错误:
"Cannot change identity of an already logged in user in realm 'AdapterAuthRealm'.
The application must logout first."`

根据以下SO问题:
Worklight: WL.Server.setActiveUser - Cann't modify - Illegal State: Cannot change identity

在设置新用户之前,我首先必须清除事件用户:
WL.Server.setActiveUser("AdapterAuthRealm", null);

我实际上希望 WL.Client.logout 自动执行此操作,但是我自己在适配器的 onLogout 函数中执行此操作似乎没有任何效果:
<realm loginModule="NonValidatingLoginModule" name="AdapterAuthRealm">
<className>com.worklight.integration.auth.AdapterAuthenticator</className>
<parameter name="login-function" value="PortalAdapter.onAuthRequired"/>
<parameter name="logout-function" value="PortalAdapter.onLogout"/>
</realm>


function onLogout() {
WL.Logger.info("invoke logout request");
WL.Server.setActiveUser("AdapterAuthRealm", null);

var input = {
method : 'get',
returnedContentType : 'text/plain',
path : '/logoutUrl'
};

WL.Server.invokeHttp(input);
}

将其添加到我的适配器中的登录功能中,如下所示:
var userIdentity = { userId: username, displayName: username, attributes: {}};
WL.Server.setActiveUser("AdapterAuthRealm", null);
WL.Server.setActiveUser("AdapterAuthRealm", userIdentity);

导致我的应用程序的登录/注销请求无限循环。

我的问题:
  • 我应该何时/何地清除我的活跃用户?
  • 使用挑战处理程序时,是否允许使用 WL.Client.logout 方法?
  • 最佳答案

  • 您的领域应该有一个注销功能,它应该指向要注销的适配器程序。您可以将其添加为领域的参数。

  • 您可以添加 WL.Server.setActiveUser("AdapterAuthRealm",null);到适配器中的 onLogout() 过程
    <realm loginModule="loginModule" name="AdapterAuthRealm">
    <className>com.worklight.integration.auth.AdapterAuthenticator</className>
    <parameter name="login-function" value="LoginAdapter.onAuthRequired"/>
    <parameter name="logout-function" value="LoginAdapter.onLogout"/>
    </realm>

    2 是的。您可以在使用挑战处理程序时使用 WL.Client.Logout();`

    关于ibm-mobilefirst - Worklight 注销不会清除事件用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23676890/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com