2017-02-17 70 views
0

美好的一天, 下面是一个很好的解决方案,或者是否有替代品或者这是不好的。网络令牌和HttpSessionState ASP

我有一个ASP MVC客户端应用程序,它会谈到一个HTTP API(也是微软,但没关系)。 在我的客户端应用程序中,我正在为用户忙于(缓存)的数据存储会话数据(HttpSessionState)。很明显,会话数据是根据作为实例的会话ID(每个客户端浏览器的会话ID)存储的。我要克服的第一个问题是我需要使用用户(应用程序用户)的唯一键存储数据,以便在浏览器中多次登录时不重写或删除缓存。我可能会打开多个会话到应用程序的Internet Explorer。这可能是同一个用户两个实例或两个会话不同的会话。

当我认证用户时,我有一个ID/webtoken。是否可以将此用作标识符并将缓存与该密钥一起使用,因此,如果用户注销缓存仅清除“登录”。请记住,这是存储在服务器而不是客户端浏览器中的HttpSessionState。

回答

0

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

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

+0

我没有使用cookie或认证cookie?当我谈论会话时,我纯粹谈论的是每个浏览器客户端的ASP HttpSessionState。 –

+0

1浏览器打开= 1会话cookie = 1会话ID = 1此Id所指的HttpSessionState集合。您说:“如果在浏览器中有多个登录名” - 您想如何在一个浏览器会话中同时登录多个用户到您的应用程序? – Konrad

+0

在浏览器中打开多个选项卡,因此示例chrome会打开两个或多个选项卡。 –