2017-08-11 19 views
5

AuthenticationInfo özelliğini HttpContext'te ASP.NET Çekirdek 2.0'de nasıl edinebilirim. ASP.NET Core 2.0'daki Güvenlik'in yeniden tasarlanmasıyla AuthenticationManager'un artık kullanılmadığını ve .Authentication'u kaldırmam gerektiğini anlıyorum. Kimlik Doğrulama Bilgilerini ASP.NET Çekirdek 2.0'de Edinme

ben 2.0 IAuthenticationService.AuthenticateAsync(string) ile değiştirildi 1.1.2

var info = await httpContext.Authentication.GetAuthenticateInfoAsync("Automatic"); 
info.Properties.StoreTokens(new List<AuthenticationToken> 
{ 
    new AuthenticationToken 
    { 
     Name = OpenIdConnectParameterNames.AccessToken, 
     Value = accessToken 
    }, 
    new AuthenticationToken 
    { 
     Name = OpenIdConnectParameterNames.RefreshToken, 
     Value = refreshToken 
    } 
}); 

await httpContext.Authentication.SignInAsync("Automatic", info.Principal, info.Properties); 

cevap

13

AuthenticationManager.GetAuthenticateInfoAsync(string) böyle bir şey yapmak için kullanılan: şimdi bir AuthenticateResult döndürür ama tam olarak aynı şekilde çalışır.

Snippet'iniz

için güncellenebilir:

var result = await httpContext.AuthenticateAsync(); 
result.Properties.StoreTokens(new List<AuthenticationToken> 
{ 
    new AuthenticationToken 
    { 
     Name = OpenIdConnectParameterNames.AccessToken, 
     Value = accessToken 
    }, 
    new AuthenticationToken 
    { 
     Name = OpenIdConnectParameterNames.RefreshToken, 
     Value = refreshToken 
    } 
}); 

await httpContext.SignInAsync(result.Principal, result.Properties); 
+1

Not "Otomatik" artık önemli bir kelimedir. Sadece '.AuthenticateAsync(); ' – Tratcher

+0

@Tratcher güzel yakalama, teşekkürler. Cevabımı Otomatik olarak [şema] ile değiştirdim, fakat düzenlememi kaydetmeyi unuttum gibi görünüyordu. Doğru söylediğinizde, hem kimlik doğrulama hem de oturum açma için varsayılan şemayı kullanmanız daha kolay olur, dolayısıyla cevabımı buna göre güncelledim. – Pinpoint