2017-07-19 38 views
0

我们有一个具有两种用户类型的应用程序。其中一人是管理员,另一人是客户。我们使用AspNet身份验证用户并发出cookie。 但是,有一种情况下管理员和用户共享相同的浏览器。当客户端登录时,cookie会被覆盖,当返回到管理员页面时,我们将失去身份验证。反过来也是如此(客户端首先登录,然后是管理员)。 有没有一种方法可以在同一浏览器上同时支持多个经过身份验证的用户? 问候。 Luis。多用户相同的浏览器asp身份

+0

'支持在同一时间对同一browser'多个认证的用户,你想实现的模拟? – Win

+0

不是真的,我只想要两个同步用户在同一个应用程序 –

+0

不行,不可能。不在身份中,不在任何其他网络应用程序中。您可以是管理员或用户。在成为其他用户之前需要注销。如果您同时拥有两个应用程序,那么该应用程序如何知道哪个用户正在使用该系统? – trailmax

回答

0

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

有没有办法让浏览器知道什么饼干应该发回,有没有办法让你的服务器知道正确的用户还有什么比读那些饼干等。为什么你想要2种不同的用户类型共享相同的浏览器窗口?这破坏了整个安全模型。

如果2人必须共享相同的设备,那么大多数浏览器都支持民营窗口或单独的“个人资料”,所以你可以有完全不同的喜好和会话而不共享任何数据。以下是Chrome浏览器的个人资料链接特征:https://support.google.com/chrome/answer/2364824

+0

我已经设法为应用程序中的每个用户创建一个单独的cookie。我真的不希望我的浏览器决定发送哪个cookie,而是让应用程序决定将哪个cookie转换为经过身份验证的用户。我们可以以某种方式拦截cookie身份转换过程中的身份吗? –

+2

这听起来不对。您不应该为每个用户创建单独的Cookie,应该使用单个Cookie名称,并且值(已加密)包含用户的ID和任何其他缓存信息,如角色和声明。 'ASP.NET Identity'自动完成所有工作,或者您可以使用'Cookie Authentication'作为只管理cookie的低级API,您必须自己添加密码验证,角色和声明结构。应用程序如何知道它是查看页面的“用户”还是“管理员”? –

+0

在我的应用程序中,路由只能由一种类型的用户使用。因此,我的想法是,如果请求中存在两个cookie,请确定被调用的路由并根据该路由决定使用哪个用户。 –

相关问题