7

我已经从这里安装了 AspNet-identity 程序集的夜间版本

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

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

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

AuthenticationManager 现在在哪里?或者用什么代替?

4

2 回答 2

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);
    }
于 2013-09-16T17:14:59.093 回答
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,因此必须从对象实例中触发。

除非我错过了什么?

于 2014-06-08T11:01:39.553 回答