AuthenticationManager.SignIn与AuthenticationManager.AuthenticateAsync的目的是什么?

Ara*_*and 5 authentication asp.net-mvc owin

AuthenticationManager 有两种方法.

void SignIn(params ClaimsIdentity[] identities);
Task<AuthenticateResult> AuthenticateAsync(string authenticationType);
Run Code Online (Sandbox Code Playgroud)

他们的目的是什么?在什么情况下应该使用它们?

Vic*_*ros 3

我认为身份验证登录方法的名称描述了目的

所以AuthenticateAsync的目的基本上是获取身份验证票证

await ticket 
 = Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ExternalBearer);
Run Code Online (Sandbox Code Playgroud)

它返回一个像这样的AuthenticateResult

{Microsoft.Owin.Security.AuthenticateResult}
    Description: {Microsoft.Owin.Security.AuthenticationDescription}
    Identity: {System.Security.Claims.ClaimsIdentity}
    Properties: {Microsoft.Owin.Security.AuthenticationProperties}
Run Code Online (Sandbox Code Playgroud)

有了这个结果,您现在可以登录(将身份信息添加到上下文中)

Context.Authentication.SignIn(ticket.Properties, ticket.Identity);
Run Code Online (Sandbox Code Playgroud)

您可以在下面的示例代码中非常清楚地看到它

var ticket = await Context.Authentication.AuthenticateAsync(Options.AuthenticationType);

    if(ticket != null)
    {
      Context.Authentication.SignIn(ticket.Properties, ticket.Identity);

      Response.Redirect(ticket.Properties.RedirectUri);

      return true;
    }
Run Code Online (Sandbox Code Playgroud)