【问题标题】:Web Tokens and HttpSessionState ASPWeb 令牌和 HttpSessionState ASP
【发布时间】:2017-07-06 17:27:08
【问题描述】:

美好的一天, 以下是一个好的解决方案还是有替代方案或者这很糟糕。

我有一个 ASP MVC 客户端应用程序,它与一个 HTTP API(也包括 Microsoft,但没关系)对话。 在我的客户端应用程序中,我正在为用户正在处理的数据(缓存)存储会话数据(HttpSessionState)。显然,会话数据是针对作为实例的会话 ID 存储的(每个客户端浏览器的会话 ID)。我要克服的第一个问题是我需要使用用户(应用程序用户)的唯一键存储数据,这样如果浏览器中有多个登录,我就不会覆盖或删除缓存。我可能会打开 Internet Explorer 并打开应用程序的多个会话。这可能是同一个用户两个实例或两个会话不同的会话。

当我对用户进行身份验证时,我有一个 ID/webtoken。可以将其用作标识符并存储包含该密钥的缓存,因此,如果用户注销,则仅针对该“登录”清除缓存。请记住,这是存储在服务器而不是客户端浏览器上的 HttpSessionState。

【问题讨论】:

    标签: c# asp.net-mvc session caching json-web-token


    【解决方案1】:

    您将无法在一个会话中登录两个不同的用户帐户,因为您在所有打开的选项卡之间仅共享一个身份验证 cookie。如果您打开另一个会话,无论用户是相同还是不同,您都会有不同的会话 ID,因此您将引用不同的会话数据。

    还请记住使用令牌来保护您的 WebAPI,因为不建议使用 cookie 身份验证,并且对于 XSS 攻击很有价值。

    【讨论】:

    • 我没有使用 cookie 或身份验证 cookie?当我谈论会话时,我纯粹是在谈论 ASP HttpSessionState,它是每个浏览器客户端的。
    • 1 个浏览器打开 = 1 个会话 cookie = 1 个会话 id = 1 此 Id 所指的 HttpSessionState 集合。您说:“.....如果浏览器中有多个登录” - 您希望如何在一个浏览器会话中同时登录多个用户到您的应用程序?
    • 在浏览器中打开多个标签页,因此示例 chrome 打开时有两个或更多标签页。
    • 好吧,试一试。当您注销时,身份验证 cookie 将被删除,并且此 cookie 在一个会话中在您的所有网站(选项卡)之间共享。这意味着当您返回上一个选项卡并刷新页面时,您的用户将被注销。如果您在一个标签中更改用户,则刷新页面后,旧用户将成为其他每个标签中的新用户。
    猜你喜欢
    • 2017-05-20
    • 2016-03-23
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 2016-12-08
    • 2019-09-28
    • 2013-07-17
    • 2019-01-30
    相关资源
    最近更新 更多