如何在网站上管理多个州?

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

对于以下场景,我们非常感谢任何帮助:

Amazon.com如何管理不同级别的身份验证,一次是在您访问网站时,另一次是在您转到“您的帐户” - >“登录和安全”作为安全功能时?

用户登录(即验证)网站,7天没有活动。用户重新访问该网站,然后要求用户再次进行身份验证。这可以使用cookie实现,但由于安全问题,它是使用服务器端的会话令牌实现的。 7天后,当浏览器提供过期令牌时,用户将被要求再次重新进行身份验证。

现在,新的要求是,如果用户登录并访问“您的帐户”页面,那么,

  1. 如果用户仍在“您的帐户”页面上且10分钟内没有活动,则应该要求用户再次重新进行身份验证。

要么。

  1. 如果用户退出“您的帐户”页面并在10分钟后重新访问“您的帐户”页面,则应该要求用户重新进行身份验证。

因此,使用令牌,我只能管理一个不活动的时间段,如何处理多个状态,即状态(7天)和部分状态(10分钟)。

处理这种情况的行业惯例是什么?不想使用cookie作为安全问题。并且当SSO提供程序用于身份验证时,使用数据库将是最后一个选项。

- 大卫。

security session authentication token session-state
1个回答
5
投票

如何处理这个问题将归结为当前即将到期的会话令牌逻辑的实现细节。

一种常见的方法是将会话令牌存储在数据库或内存缓存中。如果是这种情况,您只需添加一个新列,指示用户何时打开帐户页面。

例如,您的新列可以称为accountSettingsStartTime。通常它没有价值,但是当用户导航到帐户页面时,它将填充当前时间。当用户离开帐户页面时,您可以将其清除。然后,当您检查安全令牌时,您只需要检查标准的7天到期时间以及检查accountSettingsStartTime列并确保它在最近10分钟内。

或者,您可以为用户提供一个全新的会话令牌,当他们导航到帐户设置时,会话令牌的有效期为10分钟,并对涉及帐户设置的操作强制使用该令牌。然后,您可以在更改帐户设置时检查该令牌,并要求用户重新进行身份验证(如果已过期)(并使其标准7天令牌无效)。当然,这需要在客户端进行更多努力。

正如他们所说,有一种方法可以给猫皮肤涂抹:)

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