ASP.NET Core 8 Identity не подтверждает электронную почтуC#

Место общения программистов C#
Ответить
Anonymous
 ASP.NET Core 8 Identity не подтверждает электронную почту

Сообщение 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




















Подробнее здесь: https://stackoverflow.com/questions/798 ... firm-email
Ответить

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

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

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

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

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