2016-08-25 5 views
0

以下は、パスワードを忘れた場合のWeb API(Android携帯とやり取りするRest WebService)の方法です。WEb APIで作成されたURLを別のドメインのWebサイトにrediredctする方法

[HttpPost] 
[AllowAnonymous] 
[Route("ForgotPassword")] 
public async Task<IHttpActionResult> ForgotPassword(ForgotPasswordViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     var user = await UserManager.FindByNameAsync(model.Email); 
     //if (user == null ||!(await UserManager.IsEmailConfirmedAsync(user.Id))) 
     if (user == null) 
     { 
      return Ok(); 
     } 
     var code = await UserManager.GeneratePasswordResetTokenAsync(user.Id); 
     var callbackUrl = Url.Link("Default", new { Controller = "Account", Action = "ResetPassword", code = code }); 
     /*await UserManager.SendEmailAsync(user.Id, "Reset Password", 
      "Please reset your password by clicking here : <a href=\""+ callbackUrl +"\">link</a>"); */ 
     await UserManager.SendEmailAsync(user.Id, "Reset Password",$"{callbackUrl}"); 
     return Ok(); 
    } 
    return BadRequest(ModelState); 
} 

形成CallbackURLは

http://localhost:[port number]/Account/ResetPassword?code=[code value] ...  

しかし、その代わりにlocalhostアドレスであり、私はそれが別のドメイン(サーバー)のアドレスを指すようにしたいです。 URL.Linkメソッドを使用して必要なURLを生成する可能性はありますか?

+0

こんにちは、私にこれを案内できますか? – cell

答えて

0

あなたはHttpStatusCode.Movedで作成できるステータス301で応答できます。 301は、ロケーションヘッダーで指定されたURIへのget要求を生成します。 あなたはそれについてもっと読むことができるhere

[HttpPost] 
[AllowAnonymous] 
[Route("ForgotPassword")] 
public async Task<HttpResponseMessage> ForgotPassword(ForgotPasswordViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     var user = await UserManager.FindByNameAsync(model.Email); 
     //if (user == null ||!(await UserManager.IsEmailConfirmedAsync(user.Id))) 
     if (user == null) 
     { 
      return Ok(); 
     } 
     var code = await UserManager.GeneratePasswordResetTokenAsync(user.Id); 
     var callbackUrl = Url.Link("Default", new { Controller = "Account", Action = "ResetPassword", code = code }); 
     /*await UserManager.SendEmailAsync(user.Id, "Reset Password", 
      "Please reset your password by clicking here : <a href=\""+ callbackUrl +"\">link</a>"); */ 
     await UserManager.SendEmailAsync(user.Id, "Reset Password",$"{callbackUrl}"); 

     var response = Request.CreateResponse(HttpStatusCode.Moved); 
     response.Headers.Location = new Uri("http://www.yourNewDomain.com"); 
     return response; 
    } 

    return Request.CreateResponse(HttpStatusCode.BadRequest); 
} 
関連する問題