在mvc中使用cookie

时间:2016-09-14 10:39:21

标签: asp.net-identity asp.net-core-mvc asp.net-core-1.0

我有2个不同的网址登录应用程序,如下所示

对于实习生: - http://localhost:56739/trainee/Login/myclientname

对于管理员: - http://localhost:56739/admin/Login/myclientname

我使用以下默认登录实现

登录应用程序
var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: true);

我观察到方法PasswordSignInAsync正在为登录用户创建cookie。

但是我的问题是,如果我使用trainee url登录并尝试访问admin网址,那么由于Cookie,用户会直接登录管理应用程序而无需登录。表示实习生和管理员之间访问/共享cookie。

我的观点与admin/trainee不同,但它们位于同一项目中,文件夹结构如下。 http://i.stack.imgur.com/HyOhW.png

当我在学员和管理员之间切换时,我在布局页面中检查了以下代码行,虽然IsAuthenticated仍未登录到应用程序,但admin仍然存在,反之亦然。

 @if (User.Identity.IsAuthenticated)

我正在使用身份框架进行用户身份验证。

如何在admin/trainee之间切换时保持单独的Cookie?

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

表单身份验证cookie在整个应用程序中共享。不同意见毫无意义。

您有两个选择

1)将它们分成两个应用程序,因此不再自动共享cookie。

2)根据评论中的建议为管理员帐户分配角色或声明,然后在授权属性或策略中进行检查。