我正在创建一个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,但不能创建实际用户吗?
请让我知道我可以提供哪些更多信息来帮助找到解决方案。谢谢
答案 0 :(得分:0)
提交后不久,我发现了这个问题:Storing/Retrieving user data without database when using OWIN cookie authentication
这似乎完全符合我的需要,事实上这就是诀窍,谢谢和抱歉重复这个问题