IHttpContextAccessor: IsAuthenticated всегда ложьC#

Место общения программистов C#
Ответить
Anonymous
 IHttpContextAccessor: IsAuthenticated всегда ложь

Сообщение Anonymous »

Я создаю веб-приложение .NET8 с REST API, где я пытаюсь проверить, является ли запрашивающий пользователь администратором, чтобы выполнить разные пути кода на основе этого, но по какой-то причине код, который должен его проверять всегда возвращает false.
Метод контроллера:

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

[HttpPut]
[Route("api/vehicle")]
[SwaggerResponse((int)HttpStatusCode.Accepted)]
public async Task VehicleModify([FromBody] VehicleModel vehicleModel)
{
bool userIsAdmin = JwtMiddleware.IsUserInRoleForHttpContext(_httpContextAccessor, "Admin");

if (!userIsAdmin)
{
_logger.LogInformation("VehicleModify {@Plate}", vehicleModel.Plate);
return Unauthorized();
}

if (vehicleModel == null)
return BadRequest();

await _vehicleService.Modify(vehicleModel);
return Accepted();
}
Метод IsUserInRoleForHttpContext():

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

public static bool IsUserInRoleForHttpContext(IHttpContextAccessor httpContextAccessor, string roleName)
{
var user = httpContextAccessor.HttpContext?.User;

if (user == null || !user.Identity.IsAuthenticated) // IsAuthenticated always false
return false;

return user.IsInRole(roleName);
}
По-видимому:

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

httpContextAccessor.HttpContext?.User.Identity.IsAuthenticated
всегда неверно.
Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ways-false
Ответить

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

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

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

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

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