我有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?
感谢您的帮助!
答案 0 :(得分:3)
表单身份验证cookie在整个应用程序中共享。不同意见毫无意义。
您有两个选择
1)将它们分成两个应用程序,因此不再自动共享cookie。
2)根据评论中的建议为管理员帐户分配角色或声明,然后在授权属性或策略中进行检查。