【发布时间】:2014-06-16 13:44:15
【问题描述】:
我正在创建一个 MVC 5 应用程序,该应用程序通过 Facebook 对用户进行身份验证以访问特定资源。
我希望能够使用 cookie 对该用户进行身份验证,就好像他们以经过身份验证的用户身份手动登录到我的网站一样。
但是,此用户不得实际创建为站点使用的会员系统中的用户,因为它是为管理员保留的。
这可能吗?
我试图通过手动创建身份来做到这一点,但这完全是通过将 MVC 帐户控制器中的现有代码拼凑起来的黑客尝试...
var authUser = new ApplicationUser() { UserName = me.email, Email = me.email };
var manager = HttpContext.GetOwinContext().Authentication;
manager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
manager.SignIn(new AuthenticationProperties() { IsPersistent = true }, await HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>().CreateIdentityAsync(authUser, DefaultAuthenticationTypes.ApplicationCookie));
它似乎几乎可以工作,但随后它抱怨用户 ID 不存在。
我假设这意味着它正在尝试使用我的用户数据库来验证用户,正如我所说的,这不是我们想要的。
那么是否可以使用自定义的默认 asp.net 帐户实现手动验证用户身份并保留经过身份验证的 cookie,但不创建实际用户?
请让我知道我可以提供哪些更多信息来帮助找到解决方案。谢谢
【问题讨论】:
标签: asp.net-mvc authentication