在ASP.NET WEP API控制器中确认后重定向

amp*_*ier 4 asp.net-mvc asp.net-web-api2

我有web api帐户控制器,我确认用户电子邮件

    [System.Web.Http.AllowAnonymous]
    [System.Web.Http.HttpGet]
    [System.Web.Http.Route("ConfirmEmail", Name = "ConfirmEmailRoute")]
    public async Task<IHttpActionResult> ConfirmEmail(string userId = "", string code = "")
    {
        if (string.IsNullOrWhiteSpace(userId) || string.IsNullOrWhiteSpace(code))
        {
            ModelState.AddModelError("", "User Id and Code are required");
            return BadRequest(ModelState);
        }

        IdentityResult result = await this.AppUserManager.ConfirmEmailAsync(userId, code);

        if (result.Succeeded)
        {
            return Ok();
        }
        else
        {
            return GetErrorResult(result);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当用户单击来自电子邮件的确认链接时,将调用此方法.之后,我想将其重定向到"ConfirmidSuccessfully"页面

在MVC中,我们可以这样做:

return View("ConfirmidSuccessfully");
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以重定向:

var response = Request.CreateResponse(HttpStatusCode.Moved);
response.Headers.Location = new Uri("/ConfirmidSuccessfully");
return response;
Run Code Online (Sandbox Code Playgroud)

实际上有两个问题:根据WEB API从web api方法重定向是好还是有更好的方法什么是最合适的方法

Cod*_*und 6

当您使用REST而不是ASP.Net Web API时,重定向到视图或网页不是一个好习惯.

只需将成功的状态代码返回给客户端即可.让客户端自己进行重定向.

例如,如果您使用AngularJS应用程序连接Web API,则在成功完成电子邮件确认调用后,使用您在客户端存储的网页URL重定向到网页/视图.

[编辑]

根据您的评论

我使用angularjs,但电子邮件确认调用来自用户的电子邮件,而不是来自客户端.

然后,您必须通过使主机的URL成为您的Angular JS应用程序主机,在服务器端生成确认电子邮件.例如myangularjsapp.com/emilconfirmation/token.向您的用户发送包含此网址的电子邮件.

使用这样的URL,用户可以从他的电子邮件重定向到AngularJS App.当他点击应用程序时,您通过从AngularJS应用程序URL中检索令牌来初始化对ASP.Net Web API的调用.