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方法重定向是好还是有更好的方法什么是最合适的方法
当您使用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的调用.
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |