Как pnet Core 3.1 Identity ConfirmEmail не работает должным образом - PullRequest
1 голос
/ 07 января 2020

Я использую в качестве pnet core-hosted blazor wasm тип проекта. Я пытаюсь подтвердить учетную запись пользователя с помощью ссылки на электронную почту, которая отправляется пользователю.

Письмо создается и отправляется. Ссылка для подтверждения генерируемый: https://localhost: 5001 / accountconfirmation код = CfDJ8L2gJclnoq5BioPxBNdLc8wCyaMHcitemYm7I8XKkey + M + vauvFOj0HN1meMs6JusAIMNd8gFCe / e8U0w3MMa0blmDzAMqrXGHvekYo5iPGeFlzLrY2guPO1iwAhUlQJ4t6ZRk5ieyGcgREID / 9G8rwJKYC + Ct4WXtQiyfywGpixo63Y4B4hNdQquQE5trdzF0bOyeq2lJhbAlhe5TnsnGqiKbJq60oCuR07M / Gcp9URBLPYVCbG7Ymi + 4BUUCRA / Q == & = идентификатор пользователя 5742c1f1-7957-4154-b12d-5e6e3eaebd0f

При нажатии на ссылку электронной почты пользователь переходит в веб-приложение внешнего интерфейса Blazor, которое затем отправляет параметры строки запроса в действие AccountsController. Значения получены правильно в действии контроллера.

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

    [HttpGet]
    [Route(Urls.ConfirmAccount)]
    public async Task<IdentityResult> Confirm([FromQuery]string code,[FromQuery]string userId)
    {
        var user = await _userManager.FindByIdAsync(userId);
        IdentityResult result = await _userManager.ConfirmEmailAsync(user, code);

        return result;
    }

1 Ответ

1 голос
/ 08 января 2020

Попробуйте добавить Base64UrlDecode

    [HttpGet]
    [Route(Urls.ConfirmAccount)]
    public async Task<IdentityResult> Confirm([FromQuery]string code,[FromQuery]string userId)
    {
        code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code));
        var user = await _userManager.FindByIdAsync(userId);
        IdentityResult result = await _userManager.ConfirmEmailAsync(user, code);

        return result;
    }

Это рабочий пример: https://github.com/ADefWebserver/Blazor-Blogs/blob/master/BlazorBlogs/Areas/Identity/Pages/Account/ConfirmEmail.cshtml.cs

...