每次新访问网页时强制注销已登录 Blazor Web Server 站点的用户

问题描述 投票:0回答:1

如果这是一个愚蠢的问题,我很抱歉,最重要的是我的英语不好。我仍然每天学习一点 Blazor Web 服务器,并且在一件事上我没有什么挣扎,不知道我是否只是在浪费时间尝试理解它。我正在尝试通过自定义身份验证和使用自定义 cookie 在我的网站上实现登录注销功能,用户可以登录注销,并以正确的方式创建 cookie,并具有一定的过期时间。但是假设我关闭了我的网站和所有页面,然后我决定重新加载页面,因为 cookie 尚未过期,我可以进入安全页面,甚至不需要再次登录。这不是我想要的,我想检查用户是否首先加载索引,然后它将被强制注销。谢谢大家解答我的疑惑。

我确实尝试实现一个类来检查索引页面上第一次出现的oninitialize,但我想我以错误的方式做到了。

编辑:也许在客户端浏览器中关闭所有网页后注销当前登录的用户更容易?

编辑更多详细信息: 我是 Blazor 和 Web 开发的初学者,所以是的,所有有关 cookie 和会话的内容对我来说都有点新鲜。我必须做一些有点丑陋的事情,比如在索引页面的第一次渲染期间通过 IJSRuntime 调用函数,我的控制器中的函数首先执行注销,每次用户返回索引页面时它都会自动注销。我只需要用户登录用于特殊目的,例如管理页面和一些特殊操作,这些操作只能由某些具有特定规则的用户完成,网站的其余部分可以使用而无需任何类型的登录程序。

asp.net-core cookies blazor-server-side
1个回答
0
投票

我关闭我的网站和所有页面,然后我决定重新加载页面, 因为 cookie 尚未过期,我可以进入安全页面 甚至不需要再次登录。这不是我想要的

也许在所有网络之后注销当前登录的用户更容易 页面在客户端浏览器中关闭

如果您可以分享您当前的实施细节 - 您现在的情况以及非常适合回答或解释的场景,那就太好了”

根据您的场景和需求,您可以使用“页面加载时清除身份验证cookie”的方法。这可确保访问

Index.razor
页面后立即注销。

但是,由于其服务器端渲染和 SignalR 连接模型,这在 Blazor Server 中无法直接实现。服务器无法可靠地检测客户端何时关闭所有选项卡/窗口。

但是你可以尝试一些替代方法。例如,您可以通过设置非常短的 cookie 过期时间(秒或分钟)来模拟此行为。这会在用户短暂不活动后有效地注销用户。

另一种方法是,实现服务器端空闲超时机制,在指定的不活动时间后自动使身份验证 cookie 失效。这需要额外的服务器端逻辑和配置。

注意: 请记住,这不是您场景的确切解决方案,因为尚不清楚您的实现是什么样子。但是,是的,你认为这种方式可以进一步推进。另外,请参考这个官方文档,可能对你有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.