gpt4 book ai didi

javascript - 检测选项卡之间的 session 结束

转载 作者:数据小太阳 更新时间:2023-10-29 05:11:55 26 4
gpt4 key购买 nike

我正在开发一个可以在不同选项卡中打开的 AngularJS 网络应用程序,我想知道哪个是检测用户何时在这些选项卡之一中注销的最佳方法;我想在其他选项卡中弹出一个登录模式窗口。我正在考虑使用服务器发送的事件或跟踪我的服务器 cookie 的存在。我从来没有做过这样的事情,所以我想问一下我的选择的优缺点是什么,或者我是否错过了其他更聪明的方法。

编辑:在服务器上我有开箱即用的支持服务器发送事件的 ServiceStack (C#)

最佳答案

当您使用 ServiceStack's Server Events 时您可以在用户注销时发送通知。

首先,您需要通过执行 OnLogout Session or Auth Event 来检测用户是否已注销。 ,例如:

public class MyAuthEvents : AuthEvents
{
public IServerEvents ServerEvents { get; set; }

public override void OnLogout(IRequest httpReq,
IAuthSession session, IServiceBase authService)
{
var channel = "home"; //replace with channel tabs are subscribed to
var msg = "...";
ServerEvents.NotifyUserId(session.UserAuthId, "cmd.logout", msg, channel);
}
}

通过 UserId 通知会将通知发送到不同的选项卡以及用户登录的浏览器。如果您只想将通知发送到 1 个浏览器中的所有选项卡,您可以使用NotifySession(session.Id) API。

要向 ServiceStack 注册您的 AuthEvents 处理程序,您只需在 IOC 中注册它,例如:

container.RegisterAs<MyAuthEvents, IAuthEvents>();

然后在您的JavaScript ServerEvents Client 中处理cmd.logout 通知,例如:

$(source).handleServerEvents({
handlers: {
logout: function (msg) {
//Show AngularJS dialog
$mdDialog.alert({
title: 'Attention',
textContent: msg,
ok: 'Close'
});
},
//... Other custom handlers
}
});

关于javascript - 检测选项卡之间的 session 结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37491225/

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