如何使用Angular和ASP.NET Core 3.1确认电子邮件

佩蒂特克

我正在将Angular 9(localhost:4200)和WebAPI与dotnet Core 3.1(localhost:5000)一起使用。在用户注册期间,我将用户数据从客户端传递到服务器,然后在“注册”方法中,我向他发送电子邮件以进行验证。用户单击链接后,它将用户重定向到localhost:5000的VerifyEmail方法。

如何在注册功能中创建链接,以便代码可以首先到达客户端功能,然后在服务器上确认验证?还是有更好的方法通过Angular / dotnet核心WebApi确认电子邮件?

客户端:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { User } from '../_models/user';
import { environment } from '../../environments/environment';

@Injectable({
  providedIn: 'root'
})
export class AuthService {
baseUrl = environment.apiUrl + 'auth/';

constructor(private http: HttpClient) {}

register(user: User) {
    return this.http.post(this.baseUrl + 'register', user);
  }
}

verifyEmail(data: any) {     // not used 
    return this.http.post(this.baseUrl + 'VerifyEmail', data);
  }

服务器端:

[HttpPost("register")]
        public async Task<IActionResult> Register(UserForRegisterDto userForRegisterDto)
        {
            var code = string.Empty;
            var userToCreate = _mapper.Map<User>(userForRegisterDto);
            try
            {
                var userExists = await _userManager.FindByNameAsync(userToCreate.UserName);
                if (userExists == null)
                {
                    var result = await _userManager.CreateAsync(userToCreate, userForRegisterDto.Password);
                    code = await _userManager.GenerateEmailConfirmationTokenAsync(userToCreate);
                    if (result.Succeeded)
                    {
                        //some code
                    }
                }
                else
                {
                    var emailConfirmed = await _userManager.IsEmailConfirmedAsync(userExists);
                    code = await _userManager.GenerateEmailConfirmationTokenAsync(userExists);
                    if (emailConfirmed)
                    {
                        return Ok();
                    }
                }

                var link = Url.Action(nameof(VerifyEmail), "Auth", new { userId = userToCreate.Id, code }, Request.Scheme, Request.Host.ToString());

                await _emailService.SendAsync("[email protected]", "email verify", $"<a href=\"{link}\">Verify Email</a>", true);
            }
            catch (Exception ex)
            {
                throw;
            }
            return Ok();
        }

public async Task<IActionResult> VerifyEmail(string userId, string code)
        {
            if (string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(code))
            {
                return BadRequest();
            }

            var user = await _userManager.FindByIdAsync(userId);

            if (user == null)
            {
                return BadRequest();
            }

            if (user.EmailConfirmed)
            {
                //return Ok();
            }

            var result = await _userManager.ConfirmEmailAsync(user, code);
            if (result.Succeeded)
            {
                return Ok();
            }

            return BadRequest();
        }

预先感谢您的帮助和您的宝贵时间!

伊霍邦

我将创建一个新的角度组件,该组件解析为/ verify-email路由,并从那里称为AuthService

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'email-verification',
  template: '<h1>{{status}}</h1>',
  styleUrls: [ './email-verification.component.css' ]
})
export class EmailVerificationComponent implements OnInit  {
  status: string = "Verifying...";
  constructor(private authService: AuthService){}

  ngOnInit() {
    this.authService.verifyEmail().subscribe(_ => this.status = "Email verified!");
    //redirect to another component
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

防止没有确认电子邮件的用户使用身份2登录ASP.Net MVC

来自分类Dev

ASP.NET Web API 2-用户注册电子邮件确认失败

来自分类Dev

如何在ASP.NET MVC5 Identity 2中添加HTML电子邮件模板以进行电子邮件确认?

来自分类Dev

使ASP.NET Identity 2.0电子邮件确认令牌可用于WCF和MVC

来自分类Dev

ASP.NET身份:防止用户在未确认电子邮件的情况下登录

来自分类Dev

如何检查“用户”在ASP.NET标识(Web窗体)中是否具有已确认的电子邮件?

来自分类Dev

没有ASP.NET身份的电子邮件确认和密码策略

来自分类Dev

设计和确认电子邮件

来自分类Dev

确认电子邮件中的ASP.NET Core身份无效令牌

来自分类Dev

如何在ASP.NET Core中在电子邮件上进行动态链接

来自分类Dev

ASP.NET Core 3将电子邮件列表传递给发送方法Mailkit

来自分类Dev

如何修复电子邮件确认-在.NET Core中,它不起作用

来自分类Dev

如何在2个小时的ASP Net Core之前向用户发送事件提醒电子邮件

来自分类Dev

如何在ASP.NET Core中自动化电子邮件触发器

来自分类Dev

在Asp.net Identity核心中确认一封以上电子邮件

来自分类Dev

如何从.NET Core中的Stripe通过电子邮件检索客户的所有订阅

来自分类Dev

我如何使用angular 5和asp.net core从angular向端点发送电子邮件

来自分类Dev

如何更改ASP.NET Identity用户的电子邮件,而无需确认电子邮件?

来自分类Dev

MVC 5-ASP.NET身份-电子邮件确认中的令牌列为空

来自分类Dev

ASP.NET Web API 2-用户注册电子邮件确认失败

来自分类Dev

如何在ASP.NET WebAPI确认电子邮件的URL中编码字符?

来自分类Dev

电子邮件确认Asp.net MVC

来自分类Dev

设计和确认电子邮件

来自分类Dev

Swift 3 如何显示基于 MFMailComposeResult 电子邮件屏幕的确认屏幕

来自分类Dev

如何从swift发送确认电子邮件

来自分类Dev

在 Angular 6 / ASP.Net Core 中注册、登录、确认电子邮件和密码重置

来自分类Dev

使用数据创建重置密码链接并发送到电子邮件 ASP.NET Core Web-API

来自分类Dev

如何在 ASP.Net Core 中为唯一的电子邮件地址添加 IdentityUser IdentityResult 错误

来自分类Dev

cshtml 文件中的 Asp.Net Core 电子邮件字段验证

Related 相关文章

  1. 1

    防止没有确认电子邮件的用户使用身份2登录ASP.Net MVC

  2. 2

    ASP.NET Web API 2-用户注册电子邮件确认失败

  3. 3

    如何在ASP.NET MVC5 Identity 2中添加HTML电子邮件模板以进行电子邮件确认?

  4. 4

    使ASP.NET Identity 2.0电子邮件确认令牌可用于WCF和MVC

  5. 5

    ASP.NET身份:防止用户在未确认电子邮件的情况下登录

  6. 6

    如何检查“用户”在ASP.NET标识(Web窗体)中是否具有已确认的电子邮件?

  7. 7

    没有ASP.NET身份的电子邮件确认和密码策略

  8. 8

    设计和确认电子邮件

  9. 9

    确认电子邮件中的ASP.NET Core身份无效令牌

  10. 10

    如何在ASP.NET Core中在电子邮件上进行动态链接

  11. 11

    ASP.NET Core 3将电子邮件列表传递给发送方法Mailkit

  12. 12

    如何修复电子邮件确认-在.NET Core中,它不起作用

  13. 13

    如何在2个小时的ASP Net Core之前向用户发送事件提醒电子邮件

  14. 14

    如何在ASP.NET Core中自动化电子邮件触发器

  15. 15

    在Asp.net Identity核心中确认一封以上电子邮件

  16. 16

    如何从.NET Core中的Stripe通过电子邮件检索客户的所有订阅

  17. 17

    我如何使用angular 5和asp.net core从angular向端点发送电子邮件

  18. 18

    如何更改ASP.NET Identity用户的电子邮件,而无需确认电子邮件?

  19. 19

    MVC 5-ASP.NET身份-电子邮件确认中的令牌列为空

  20. 20

    ASP.NET Web API 2-用户注册电子邮件确认失败

  21. 21

    如何在ASP.NET WebAPI确认电子邮件的URL中编码字符?

  22. 22

    电子邮件确认Asp.net MVC

  23. 23

    设计和确认电子邮件

  24. 24

    Swift 3 如何显示基于 MFMailComposeResult 电子邮件屏幕的确认屏幕

  25. 25

    如何从swift发送确认电子邮件

  26. 26

    在 Angular 6 / ASP.Net Core 中注册、登录、确认电子邮件和密码重置

  27. 27

    使用数据创建重置密码链接并发送到电子邮件 ASP.NET Core Web-API

  28. 28

    如何在 ASP.Net Core 中为唯一的电子邮件地址添加 IdentityUser IdentityResult 错误

  29. 29

    cshtml 文件中的 Asp.Net Core 电子邮件字段验证

热门标签

归档