如何使用会话cookie管理登录?在不同标签中使用不同用户名的共享会话Cookie
当用户登录时,使用ASP.NET Forms Authentication等天真的方法设置cookie。然后在每次调用服务器时检查Cookie。
但Cookie在浏览器选项卡之间共享。这似乎有问题。
我在TAB A中以Dave的身份登录,然后继续以Dave身份执行所有操作。
或多或少同时出现,我以TAB B上的Alfonso身份登录。此登录名的cookie会覆盖Dave cookie。
因此,TAB A中的所有工作都是作为Dave完成的,“登录为”UI元素表示Dave,但是当我提交时,服务器执行所有工作,就像它完成了Alfonso一样。
这看起来不太好。这里最好的做法是什么?通过将加密的用户名放入每个呼叫的URL中,唯一的解决方案是使用无Cookie会话吗?
如果Dave的会话cookie附带请求,我当然可以防止Alfonso的登录。但是这里没有时间窗口问题:Dave登录到TAB A上。在响应返回cookie之前,Alfonso登录到TAB B. Alfonso的登录将被接受,因为它也没有随附的会话cookie。 – dkeisen
这听起来像一个不太合理的情况。您的登录有多慢,有人可以在获得响应之前打开新标签并登录?现实生活中什么时候会发生?在这种情况下,一个人仍然只能登录,因此在帖子的第二到最后一个段落中的问题永远不会发生。 – MikeSmithDev
这不太可能,我同意。当设计安全管理软件时,“不太可能”不是我使用的通常标准。 – dkeisen