Asp.Net Identity RTM版本中的Microsoft.AspNet.Identity.Owin.AuthenticationManager在哪里?

时间:2013-09-14 11:08:50

标签: asp.net asp.net-identity

我已经安装了here

的AspNet标识程序集的每晚版本

似乎RC版本的AuthenticationManager类已从RTM版本( Microsoft.AspNet.Identity.Owin.1.0.0-rtm-130914 )中删除。

它曾经在 Microsoft.AspNet.Identity.Owin 程序集中,但它不再存在。

此类具有以下方法:SignInAsyncCheckPasswordAndSignInAsync,这些方法在您使用个人用户帐户身份验证创建新的ASP.Net Web应用程序MVC项目时获得的默认项目中使用。

AuthenticationManager现在在哪里?或者使用什么呢?

2 个答案:

答案 0 :(得分:4)

该类已经消失,因为它基本上只是添加生成ClaimsIdentity的方法并将其传递给Owin.Security.IAuthenticationManager。

相反,RTM模板在控制器中有一个SignIn方法,如下所示:

    private async Task SignInAsync(ApplicationUser user, bool isPersistent) {
        AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
        var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
        AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
    }

答案 1 :(得分:4)

如果我错了但没有将AuthenticationManager移到

,有人会纠正我

HttpContext.Current.GetOwinContext().Authentication

所以上面的例子现在是:

private async Task SignInAsync(UserManager<User> manager, User user, bool isPersistent)
{
    var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
    authenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
    var identity = await manager.CreateIdentityAsync(user, DeffaultAuthenticationTypes.ApplicationCookie);
    authenticationManager.SignIn(new AuthenticationProperties(){ IsPersistent = isPersistent }, identity);
}

请注意,UserManager似乎不再具有静态方法CreateIdentityAsync,因此必须触发对象实例。

除非我错过了什么?