2017-09-19 23 views
5

AuthenticationManager有兩種方法。AuthenticationManager.SignIn與AuthenticationManager.AuthenticateAsync有什麼作用?

void SignIn(params ClaimsIdentity[] identities); 
Task<AuthenticateResult> AuthenticateAsync(string authenticationType); 

他們的目的是什麼?在什麼情況下應該分別使用它們?

+1

你試過這個[link](https://msdn.microsoft.com/en-us/library/microsoft.owin.security.iauthenticationmanager.authenticateasync(v = vs.113).aspx) – Nilesh

+0

我想這個問題有一個非常好的答案,包括幫助很多人的解釋。這就是爲什麼我添加了賞金。我不想要一個鏈接。 (但無論如何:) :) –

回答

0

我覺得目的是在方法名稱描述身份驗證簽到

所以AuthenticateAsync的目的基本上得到身份驗證票證

await ticket 
= Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ExternalBearer); 

它返回一個AuthenticateResult這樣

{Microsoft.Owin.Security.AuthenticateResult} 
    Description: {Microsoft.Owin.Security.AuthenticationDescription} 
    Identity: {System.Security.Claims.ClaimsIdentity} 
    Properties: {Microsoft.Owin.Security.AuthenticationProperties} 

以及與此結果你現在可以簽到(添加身份信息到上下文)

Context.Authentication.SignIn(ticket.Properties, ticket.Identity); 

你可以看到它在下面的示例代碼中很清楚

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; 
    } 
0

下面是基於visual studio工具提示的這兩種方法的描述。 它可能有用。

AuthenticationManager.SignIn AuthenticationManager.AuthenticateAsync

+1

對於100分的獎勵,這是一個很詳細的答案。我可以自己查看工具提示。 –