Я пытаюсь подтвердить электронное письмо с помощью сгенерированного токена подтверждения электронной почты UserManager. У меня буквально есть рабочий проект с этим же кодом, но я не понимаю, почему это происходит сейчас.
Это мой обработчик, я пытаюсь подтвердить электронное письмо сразу после создания пользователя, потому что хочу упростить тестирование, но у меня есть обработчик для подтверждения электронного письма, и я получаю ту же ошибку «Неверный токен».
Я получаю пользователя после того, как я его создал, потому что я проверял, чтобы убедиться, что проблема не в экземпляре пользователя.
using ARKO.Application.Helpers;
using ARKO.Application.Providers;
using ARKO.CrossCutting;
using ARKO.CrossCutting.Enums;
using ARKO.CrossCutting.Settings;
using ARKO.Domain.Entities;
using ARKO.Domain.Validators.StandaloneValidators;
using FluentValidation;
using MediatR;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options;
using System.Net;
namespace ARKO.Application.UserContext.RegisterUser;
public class RegisterUserCommandHandler(
UserManager userManager,
IValidator userValidator,
IEmailProvider emailProvider,
IOptions emailSettings) : IRequestHandler
{
private readonly EmailSettings _emailSettings = emailSettings.Value;
public async Task Handle(RegisterUserCommandRequest commandRequest, CancellationToken cancellationToken)
{
if (await userManager.FindByEmailAsync(commandRequest.Email) != null)
return Notification.CreateError(HttpStatusCode.BadRequest, ErrorCode.EmailAlreadyInUse);
var userPasswordValidationResult = UserPasswordValidator.Validate(commandRequest.Password);
if (!userPasswordValidationResult.IsValid)
return Notification.CreateError(HttpStatusCode.BadRequest, ErrorCode.EntityValidationError, userPasswordValidationResult.Errors);
var user = new User(commandRequest.Email);
var userValidationResult = userValidator.Validate(user);
if (!userValidationResult.IsValid)
return Notification.CreateError(HttpStatusCode.BadRequest, userValidationResult.Errors);
var createUserResult = await userManager.CreateAsync(user, commandRequest.Password);
if (!createUserResult.Succeeded)
return Notification.CreateError(HttpStatusCode.BadRequest, createUserResult.Errors);
var usera = await userManager.FindByEmailAsync(user.Email);
var emailConfirmationToken = await userManager.GenerateEmailConfirmationTokenAsync(usera);
var x = await userManager.ConfirmEmailAsync(usera, emailConfirmationToken);
var mailMessage = EmailMessageHelper.BuildEmailConfirmation(_emailSettings.UserName, user.Email, emailConfirmationToken);
emailProvider.Send(mailMessage);
return Notification.CreateSuccess(HttpStatusCode.NoContent);
}
}
Это моя конфигурация удостоверения:
using ARKO.Domain.Entities;
using ARKO.Infrastructure.Data;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.DependencyInjection;
namespace ARKO.CrossCutting.DependencyInjection.Dependencies;
internal static class IdentityConfiguration
{
public static void AddIdentity(this IServiceCollection services) =>
services
.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
}
Это мой csproj внедрения зависимостей:
net8.0
enable
Подробнее здесь: https://stackoverflow.com/questions/798 ... firm-email
.NET Core 8 Identity не подтверждает электронную почту ⇐ C#
Место общения программистов C#
-
Anonymous
1763071428
Anonymous
Я пытаюсь подтвердить электронное письмо с помощью сгенерированного токена подтверждения электронной почты UserManager. У меня буквально есть рабочий проект с этим же кодом, но я не понимаю, почему это происходит сейчас.
Это мой обработчик, я пытаюсь подтвердить электронное письмо сразу после создания пользователя, потому что хочу упростить тестирование, но у меня есть обработчик для подтверждения электронного письма, и я получаю ту же ошибку «Неверный токен».
Я получаю пользователя после того, как я его создал, потому что я проверял, чтобы убедиться, что проблема не в экземпляре пользователя.
using ARKO.Application.Helpers;
using ARKO.Application.Providers;
using ARKO.CrossCutting;
using ARKO.CrossCutting.Enums;
using ARKO.CrossCutting.Settings;
using ARKO.Domain.Entities;
using ARKO.Domain.Validators.StandaloneValidators;
using FluentValidation;
using MediatR;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options;
using System.Net;
namespace ARKO.Application.UserContext.RegisterUser;
public class RegisterUserCommandHandler(
UserManager userManager,
IValidator userValidator,
IEmailProvider emailProvider,
IOptions emailSettings) : IRequestHandler
{
private readonly EmailSettings _emailSettings = emailSettings.Value;
public async Task Handle(RegisterUserCommandRequest commandRequest, CancellationToken cancellationToken)
{
if (await userManager.FindByEmailAsync(commandRequest.Email) != null)
return Notification.CreateError(HttpStatusCode.BadRequest, ErrorCode.EmailAlreadyInUse);
var userPasswordValidationResult = UserPasswordValidator.Validate(commandRequest.Password);
if (!userPasswordValidationResult.IsValid)
return Notification.CreateError(HttpStatusCode.BadRequest, ErrorCode.EntityValidationError, userPasswordValidationResult.Errors);
var user = new User(commandRequest.Email);
var userValidationResult = userValidator.Validate(user);
if (!userValidationResult.IsValid)
return Notification.CreateError(HttpStatusCode.BadRequest, userValidationResult.Errors);
var createUserResult = await userManager.CreateAsync(user, commandRequest.Password);
if (!createUserResult.Succeeded)
return Notification.CreateError(HttpStatusCode.BadRequest, createUserResult.Errors);
var usera = await userManager.FindByEmailAsync(user.Email);
var emailConfirmationToken = await userManager.GenerateEmailConfirmationTokenAsync(usera);
var x = await userManager.ConfirmEmailAsync(usera, emailConfirmationToken);
var mailMessage = EmailMessageHelper.BuildEmailConfirmation(_emailSettings.UserName, user.Email, emailConfirmationToken);
emailProvider.Send(mailMessage);
return Notification.CreateSuccess(HttpStatusCode.NoContent);
}
}
Это моя конфигурация удостоверения:
using ARKO.Domain.Entities;
using ARKO.Infrastructure.Data;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.DependencyInjection;
namespace ARKO.CrossCutting.DependencyInjection.Dependencies;
internal static class IdentityConfiguration
{
public static void AddIdentity(this IServiceCollection services) =>
services
.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
}
Это мой csproj внедрения зависимостей:
net8.0
enable
Подробнее здесь: [url]https://stackoverflow.com/questions/79819474/net-core-8-identity-dont-confirm-email[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия