c # — Asp.NET — Identity 2 — Недопустимая ошибка токена

Я использую Asp.Net-Identity-2, и я разработал поток проверки электронной почты.

В моем локальном окружении все работает хорошо, но как только я развернул код на своем сервере и протестировал тот же сценарий (который работает на моем локальном компьютере) на моем сервере, он говорит «Недопустимый токен».

сценарий

  • Сменить имейл
  • Получить почту
  • Нажмите на ссылку «Подтвердить адрес электронной почты»
  • Перенаправлено на веб-страницу
  • Всплывающее сообщение «Неверный токен»

Я уже проверяю все возможные ошибки, которые есть в этом вопрос и у меня все в порядке, поэтому отлично работает на моем местном. Должно быть что-то с сервером. Я думал, что дата сервера может повлиять, но я поставил на синхронизацию дату моего сервера баз данных и моего веб-сервера, и он все еще не работает.

Я использую GenerateEmailConfirmationTokenAsync для генерации токена и использую ConfirmEmailAsync для подтверждения токена. Я действительно выполняю эти методы, потому что я помещаю логи для этого, чтобы я мог быть уверен в этом (Когда вы не знаете, что происходит, вы должны быть уверены, что все правильно?)

Я уже кодирую / декодирую URL, чтобы токен не был поврежден. Я уверен в этом, потому что я положил логи и запустил код на сервере и проверил пару раз.

У пользователя есть отметка безопасности в базе данных, так что это не так

TokenLifeSpan составляет 8 дней. Так что это не так.

Я даже попробовал свойство AllowOnlyAlphanumericUserNames = false в UserValidator и даже UniqueEmail = false

userManager.UserValidator = new UserValidator<User>(userManager) { AllowOnlyAlphanumericUserNames = false, UniqueEmail = false };

Код для генерации токена

ApplicationUserManager.GenerateEmailConfirmationTokenAsync(userId);

Код для подтверждения токена

ApplicationUserManager.ConfirmEmailAsync(subject, token);

Любая идея?

Обновить

Он работал на сервере / локально со всеми клиентами, но не с клиентом Php, а клиент Php выполнял дополнительную работу, которая изменяла марку безопасности, отсюда и проблема.

Поскольку единственный клиент на сервере был в Php, я подумал, что что-то не так с сервером, а не с моей локальной средой. После установки всей среды (с php-клиентом) в моей локальной системе и отладки я обнаружил проблему. Пожалуйста, прочитайте ответ ниже.

0

Решение

Ну, ошибка была вызвана кодом, который выполнялся после генерации токена. Этот код изменял метку безопасности пользователя в базе данных.

Поскольку Asp.Net Identity 2 использует штамп безопасности для создания и проверки токена, и он был изменен после генерации токена, токен всегда был недействительным.

Спасибо!

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector