我通过创建Default.aspx
和名为login.aspx
的自定义登录页面实现了表单身份验证。如果未经身份验证的用户浏览到Default.aspx
,则会将其重定向到login.aspx
,并且仅当找到所提供凭据的匹配时,才会将用户重定向到default.aspx
。
但是当使用Firefox时,似乎所有浏览器实例都使用相同的身份验证cookie实例,因此如果浏览器B1中的用户以用户U1身份登录,则访问该Web应用程序的所有浏览器实例都将以用户身份登录U1。因此,如果例如浏览器实例B1第一次请求 Default.aspx ,则会立即授予其访问权限。
如果我以用户U1登录后,我会浏览login.aspx
并使用不同的用户名(例如用户U2)登录,然后在回发所有浏览器(之前以用户U1登录)将现在以用户U2登录。
如何防止此类行为,以便每个浏览器实例都会收到自己的身份验证Cookie?
答案 0 :(得分:5)
每个浏览器实例都有自己的一组Cookie。和历史。和书签。因为每个正在运行的实例都需要附加到自己的配置文件中。
但是,任何给定的实例都可以打开多个选项卡和窗口。那些将共享cookie。如果这对你不起作用,那就不要使用cookies ......
如果您只是希望这样做更容易进行测试,为什么不设置单独的测试配置文件并启动附加到其上的单独的Firefox实例?
答案 1 :(得分:3)
快速实验向我展示了Shog9的含义。启动Firefox。然后启动Firefox的另一个“实例”。然后查看任务管理器,您将看到只运行一个firefox.exe进程。
我认为他意味着你从未真正看到过两个Firefox实例。你只看到同一个实例运行两个窗口。当然,那些人共享相同的cookie。
我认为这意味着为了实际拥有单独的实例,它们必须在单独的登录或用户配置文件下运行,并且将具有单独的cookie集。
编辑:FireFox中个人资料的一些资源:
答案 2 :(得分:1)
我认为你的问题含糊不清。 Firefox允许您拥有任意数量的cookie集。每个集都必须是Firefox配置文件的一部分。每个配置文件可以打开任意数量的窗口和进程(注意,为了避免加入现有进程,您必须使用no-remote)。
我认为你一直在使用具有相同配置文件的多个窗口,这些窗口预计会共享一个cookie集。