2014-10-09 22 views
7

我嘗試使用owin身份驗證管理器來認證用戶,但User.Identity.IsAuthenticated仍然是錯誤的。Owin Authentication.SignIn不起作用

Startup.cs

public partial class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     app.MapSignalR(); 
    } 
} 

Startup.Auth.cs

public partial class Startup 
{ 
    public static Func<UserManager<ApplicationUser>> UserManagerFactory { get; set; } 

    public Startup() 
    { 
     UserManagerFactory =() => 
     { 
      var userManager = new UserManager<ApplicationUser>(new CustomUserStore()); 
      return userManager; 
     }; 
    } 

    public void ConfigureAuth(IAppBuilder app) 
    { 
     app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
      LoginPath = new PathString("/Account/Login"), 
      LogoutPath = new PathString("/Account/LogOff"), 
      ExpireTimeSpan = TimeSpan.FromDays(7) 
     }); 
    } 
} 

認證行動的某些部分:

private async Task SignInAsync(ApplicationUser user, bool isPersistent) 
    { 
     var authManager = return HttpContext.GetOwinContext().Authentication; 
     authManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie); 
     var identity = await userManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); 
     authManager.SignIn(new AuthenticationProperties { IsPersistent = isPersistent }, identity); 
    } 

Identity value

After sign in

身份創建成功,但SignIn方法不登錄用戶。怎麼了?

+0

Cookie是否已發送到您的瀏覽器?它是由瀏覽器保存的嗎? – trailmax 2014-10-09 22:29:25

+0

@trailmax,不,cookie沒有發送到瀏覽器。 – Neshta 2014-10-10 03:58:01

回答

6

這是一個非常愚蠢的錯誤。我忘記了撥打ConfigureAuth方法。

public partial class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     ConfigureAuth(app); // <-- this 
     app.MapSignalR(); 
    } 
}