Web API中的电子邮件确认 - c#

我有Web API应用程序,并且想要实现电子邮件确认。

现在,我有了采用address的方法-客户端主机,它将位于回调URL uriBuilder中,并将由用户从邮件中打开:

public async Task<IdentityResult> RegisterAsync(string email, string userName, string password, string address)
{
    var user = new ApplicationUser { Email = email, UserName = userName };
    var result = await _userManager.CreateAsync(user, password);

    if (result.Succeeded)
    {
        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

        var uriBuilder = new UriBuilder(address) { Port = -1 };
        var query = HttpUtility.ParseQueryString(uriBuilder.Query);
        query["userId"] = user.Id;
        query["code"] = code;
        uriBuilder.Query = query.ToString();

        await _emailService.SendEmailAsync
        (
            user.Email,
            "Email confirmation",
            $"Confirm the registration by clicking on the <a href='{uriBuilder}'>link</a>."
        );
    }

    return result;
}

然后在客户端将对API进行POST调用:

public async Task<bool> ConfirmEmailAsync(string userId, string code)
{
    var user = await _userManager.FindByIdAsync(userId);

    if (user == null)
    {
        throw new UserNotFoundException();
    }

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

这样一来,用户就不会直接与API交互。

可以在请求中传递主机地址吗?如果没有,如果有多个客户该怎么办?如果有一个客户端,我可以对主机进行硬编码或将其移动到配置中。

参考方案

我想一个用户应该在您的方案中与特定的主机/地址相关联。如果将与用户关联的主机存储在Db中,并通过RegisterAsync方法获取该主机,该怎么办?

ASP.NET Web API 2中AuthorizeAttribute发生了什么变化? - c#

我已经将项目和一组单元测试从ASP.NET Web API升级到ASP.NET Web API 2。我们将自定义DelegatingHandler用于自定义身份验证机制。它将Thread.CurrentPrincipal和HttpContext.Current.User设置为适当的System.Security.Claims.ClaimsPrincipal。…

ASP.NET图表在服务器上不起作用 - c#

我一直在尝试制作一个Web应用程序,当我在笔记本电脑上运行它时,一切似乎都还可以,但是当我尝试将其上传到服务器中时,它却无法正常工作。我在.net 4上使用了Godaddy Windows服务器。我尝试修改web.config文件,但它似乎不起作用。这就是我的临时图像在web.cofig中保存位置的样子 <add key="ChartImag…

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……

在ASP.NET Web API中创建输入参数并使用Java Web服务功能 - java

我创建了一个具有附加功能的Java Web服务。我还创建了一个ASP.NET Web API,该API调用Java Web服务并显示结果。可以说,我输入http://localhost:8080/addition/9/6作为带有Java Web服务功能应添加的输入参数的URL。我得到的输出数据为{"firstNumber":9,"…

Selenium Web Driver访问Jquery中的Javascript全局变量 - javascript

我正在尝试使用Selenium在Python中运行功能测试,我想在某个页面上声明的Javascript中检索全局变量的值。通常,browser.execute_script("return globalVar;")可以正常工作,但是在$(document).ready(function(){中声明了该变量,Selenium无法找到它。因此…