跟进this问题后,缺少方法SignOut()
和SignIn()
的引用:
private async Task SignInAsync(User user, bool isPersistent)
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
}
有人知道如何解决它吗?
答案 0 :(得分:9)
您是如何定义 AuthenticationManager 属性的?通常它应如下所示:
private IAuthenticationManager AuthenticationManager
{
get
{
return HttpContext.GetOwinContext().Authentication;
}
}
有了这个,您应该可以调用 SignOut 和 SignIn 方法。
答案 1 :(得分:3)
如果您在控制器外呼叫,则应按以下方式定义AuthenticationManager。
private IAuthenticationManager AuthenticationManager
{
get
{
return HttpContext.Current.GetOwinContext().Authentication;
}
}
答案 2 :(得分:1)
GetOwinContext()是Microsoft.Owin.Host.SystemWeb.dll中存在的扩展方法。
您必须添加Microsoft.Owin.Host.SystemWeb NuGet包。
它是System.Web命名空间的一部分。因此,请确保在使用部分中包含System.Web。
答案 3 :(得分:0)
您可能已包含System.Net
而不是Microsoft.Owin.Security
。两者都有AuthenticationManager
类的定义。
答案 4 :(得分:-1)
应在Microsoft.Owin.Security命名空间中定义方法。您可以检查项目中是否正确引用了Microsoft.Owin dll