Ответы пользователя по тегу ASP.NET
  • По какой причине jwt токен не валидный?

    Timur2342
    @Timur2342 Автор вопроса
    Я сам не понял как починил. Изменил я только конфигурацию (если точнее только переминовал "TokenNameInCookie" на "TokenNameInCookies" чтобы была привязка к свойству) и убрал лишнию "Bearer " в context.Token. Вот измененный код:
    builder.Services.AddAuthentication(auth =>
    {
        auth.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
        auth.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    }).AddJwtBearer((opts) =>
    {
        opts.RequireHttpsMetadata = false,
    
        opts.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = false, 
            //ValidIssuer = jwtOptions.Issuer,
    
            ValidateAudience = false, 
            //ValidAudience = jwtOptions.Audience, 
    
            ValidAlgorithms = new List<string> { jwtOptions.Algorithm }, 
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = jwtOptions.GetSymmetricSecurityKey(),
    
            ValidateLifetime = true,
            LifetimeValidator = (notBefore, expires, securityToken, validationParameters) => 
            {
                if (expires != null)
                    return expires.Value > DateTime.UtcNow;
    
                return false;
            },
            //Тут пишуться валидные значения, чтобы потом аут через токен(проверка на валидность)
        };
        opts.Events = new JwtBearerEvents
        {
            OnMessageReceived = async (context) =>
            {
                if (context is not null
                    && string.IsNullOrEmpty(context.Token)
                    && context.Request.Cookies.ContainsKey(jwtOptions.TokenNameInCookies)
                    && context.Request.Cookies.TryGetValue(jwtOptions.TokenNameInCookies, out var token))
                {
                    context.Token = token;
                }
                await Task.CompletedTask;
            }
        };
    });

    Токен ложу через Authorization header(swagger-ом), код отвечающий за то чтобы дать значение данному хеддеру я не изменял. И вот не понятно, почему раньше не работало когда в хеддере токен был а в куках нет?
    Ответ написан
    Комментировать
  • Почему RedirectToPage() выдает System.InvalidOperationException: No page named 'Chat' matches the supplied values?

    Timur2342
    @Timur2342 Автор вопроса
    Дело было в том что я в RedirectToPage("Chat", "OnGet", new { ChatId }); создавал анонимный тип(3-й параметр метода), у которого имелось свойстов ChatId равное 0 (тк ChatId это int, то дефолт значение у него будет 0), вместо этого стоило создать свойство "id" с значением ChatId: RedirectToPage("Chat", new { id = ChatId })
    Ответ написан
    Комментировать