дней. Я борюсь с новой аутентификацией в .NET Core 2.2. Вот что у меня есть:
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options => options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = $"/api{CookieAuthenticationDefaults.LoginPath}";
options.LogoutPath = $"/api{CookieAuthenticationDefaults.LogoutPath}";
options.EventsType = typeof(MyEvents);
});
services.AddScoped<MyEvents>();
}
public class MyEvents : CookieAuthenticationEvents
{
public async override Task SignedIn(CookieSignedInContext context)
{
// do some checks
// add cookie to CookieManager >> WORKS WELL
// add claims to Principal >> NOT WORKING
if (error)
{ await context.HttpContext.SignOutAsync(scheme); context.Principal = null ; }
}
public async override Task ValidatePrincipal(CookieValidatePrincipalContext context)
{
// idea here is to check if claims are already set, if not add them
if (context.Principal.HasClaim(c => c.Type == ClaimTypes.NameIdentifier))
return;
// time consuming claims search
// add claims here : WORKS but only for this instance
}
Проблема
Добавление заявок в SignedIn делает абсолютноНичего, при возвращении в вызывающий метод утверждения не устанавливаются.
Добавление утверждений в ValidatePrincipal работает только для текущей проверки [Authorize].Каждый раз, когда я вхожу в этот метод, заявки больше не устанавливаются.
Я бы хотел избежать трудоемкого процесса поиска заявок.Есть ли более безопасный способ добавить их один раз для сеанса?
Приветствия,