【问题标题】:Multiple users same browser asp identity多个用户相同的浏览器asp身份
【发布时间】:2020-10-26 23:26:46
【问题描述】:

我们有一个有两种用户类型的应用程序。其中一位是管理员,另一位是客户。我们使用 AspNet 身份验证用户并发出 cookie。 但是,存在管理员和用户共享同一个浏览器的情况。当客户端登录时,cookie 被覆盖,当返回管理员页面时,我们失去了身份验证。反过来也一样(客户端先登录,然后是管理员)。 有没有办法在同一个浏览器上同时支持多个经过身份验证的用户? 问候。 路易斯。

【问题讨论】:

  • support multiple authenticated users at the same time on the same browser 您是否尝试实现模拟?
  • 不是真的,我只是想让两个同时用户在同一个应用上
  • 不,不可能。不在身份中,不在任何其他网络应用程序中。你要么是管理员,要么是用户。在成为其他用户之前需要注销。如果您同时拥有两者,应用程序如何知道哪个用户正在使用系统?

标签: asp.net cookies asp.net-identity owin


【解决方案1】:

不,浏览器不了解任何用户。您设置 cookie,浏览器会发回这些 cookie。然后应用程序接收并检查这些 cookie 以在下一个请求中找出当前用户;

浏览器无法知道它应该发回哪些 cookie,并且除了读取这些 cookie 之外,您的服务器也无法知道正确的用户是什么。为什么你希望 2 种不同的用户类型共享同一个浏览器窗口呢?这破坏了整个安全模型。

如果 2 个人必须共享同一设备,那么当今的大多数浏览器都支持私人窗口或单独的“配置文件”,因此您可以拥有完全独立的偏好和会话,而无需共享任何数据。这是 Chrome 配置文件功能的链接:https://support.google.com/chrome/answer/2364824

【讨论】:

  • 我已经设法为应用程序中的每个用户创建了一个单独的 cookie。我真的不希望我的浏览器决定发送哪个 cookie,而是让应用程序决定将哪个 cookie 转换为经过身份验证的用户。我们能不能以某种方式拦截cookie的过程——asp身份上的身份转换?
  • 这听起来不对。您不应该为每个用户创建单独的 cookie,应该使用单个 cookie 名称,并且值(已加密)包含用户的 id 和任何其他缓存信息,如角色和声明。 ASP.NET Identity 自动执行所有操作,或者您可以将 Cookie Authentication 用作仅管理 cookie 的较低级别的 API,您必须自己添加密码验证、角色和声明结构。应用程序如何知道查看页面的是“用户”还是“管理员”?
  • 在我的应用程序中,路由只能被一种类型的用户使用。因此,我的想法是,如果两个 cookie 都出现在请求中,请识别被调用的路由并根据该路由决定将使用哪个用户。
猜你喜欢
  • 1970-01-01
  • 2019-06-28
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多