HttpContext.SignInAsync не работает должным образом или аутентификация произошла с задержкойC#

Место общения программистов C#
Ответить
Anonymous
 HttpContext.SignInAsync не работает должным образом или аутентификация произошла с задержкой

Сообщение Anonymous »

Я разработал основное веб-приложение .net 6 asp.net. Там я использовал метод HttpContext.SignInAsync для аутентификации. Мои коды приведены ниже:
В program.cs:

Код: Выделить всё

builder.Services
.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(
options =>
{
options.Cookie.Name = "cookie name";
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromDays(1);
options.SlidingExpiration = false;
});
Регистрация промежуточного программного обеспечения аутентификации:

Код: Выделить всё

.UseAuthentication()
.UseAuthorization()
Затем в моем контроллере входа:

Код: Выделить всё

var claims = AssertPermissionClaims(user);
var identity = new ClaimsIdentity(claims,
CookieAuthenticationDefaults.AuthenticationScheme);
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new
ClaimsPrincipal(identity));

//AssertPermissionClaims method
private static Claim[]? AssertPermissionClaims(AppUser user)
{
var claims = new[] {
new Claim(ClaimTypes.Name, user?.UserName ?? ""),
new Claim(ClaimTypes.Role, user?.RoleName ?? ""),
new Claim(ClaimTypes.UserData, user==null ||
user.UserId==null?"":user.UserId.ToString())
};
return claims;
}
После этого звонка я перенаправляюсь на домашнюю страницу. И из HomeController, когда я звоню

Код: Выделить всё

User?.Identity?.IsAuthenticated
или

Код: Выделить всё

HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.UserData)?.Value
Я получаю сообщение false или NULL. Но если я перезагрузлю страницу несколько раз на одной и той же домашней странице, она пройдет аутентификацию. Я в замешательстве, что здесь вообще происходит? Процесс аутентификации занимает много времени? Или возникла проблема с моей реализацией?
Ищу ответ. Спасибо.
Обновление: проблема возникает только с рабочим сервером, сервером разработки, он работает нормально. Пробовал также использовать специальную реализацию SessionStore. То же самое происходит.

Подробнее здесь: https://stackoverflow.com/questions/786 ... ened-in-de
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»