Timur2342
@Timur2342

По какой причине User равен null?

Program:
builder.Services.AddAuthentication(auth =>
{
    auth.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    auth.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer((opts) =>
{
    opts.RequireHttpsMetadata = false

    opts.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = true,
        ValidIssuer = jwtOptions.Issuer,
        ValidateAudience = false,
        ValidAlgorithms = new List<string> { jwtOptions.AlgorithmForAccessToken }, 
        ValidateIssuerSigningKey = true,
        IssuerSigningKey = jwtOptions.GetAccessSymmetricSecurityKey(),

        ValidateLifetime = true,
        LifetimeValidator = (notBefore, expires, securityToken, validationParameters) =>
        {
            if (expires != null)
                return expires.Value > DateTime.UtcNow;

            return false;
        }
    };
});
builder.Services.AddAuthorization();


Само создание токена:
public string AccessTokenCreate(UserEntity user)
    {
        var signingCredentials = new SigningCredentials(
           _options.GetAccessSymmetricSecurityKey(),
             _options.AlgorithmForAccessToken);

        var claims = new List<Claim>
        {
            new Claim("userId", user.Id.ToString()),
            new Claim("userName", user.Name.ToString()),
            new Claim("userEmail", user.Email.ToString())
        };

        var token = new JwtSecurityToken(
            issuer: _options.Issuer,
            claims: claims,
            notBefore: DateTime.UtcNow/*notBefore - начиная с какого времени токен может быть валидным*/,
            expires: DateTime.UtcNow.AddMinutes(_options.AccessTokenExpiresMinutes),
            signingCredentials: signingCredentials);

        return new JwtSecurityTokenHandler().WriteToken(token);
    }

И вот конфиг:
"Issuer": "localhost",
"AlgorithmForAccessToken": "HS512",
"AccessTokenExpiresMinutes": 15,
"AccessTokenNameInCookies": "jwtToken",
"AccessTokenSecretKey": "accesstokensecretkeyaccesstokensecretkeyaccesstokensecretkeyaccesstokensecretkey",

Самое странное что аутентификацию юзер прошел но при этом User = null. Откуда может быть проблема?
  • Вопрос задан
  • 368 просмотров
Решения вопроса 1
Timur2342
@Timur2342 Автор вопроса
Огромное спасибо Петр, ваш ответ решил мою проблему. Фильтры же работают лишь после создания контоллера, затупил конечно
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
NikFaraday
@NikFaraday
Student full-stack Developer
Нужен дебаг-скрин контекста при запросе. Скорее всего у вас просто неверный заголовок либо его значение
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы