web-dev-qa-db-ja.com

IHttpActionResultはJsonオブジェクトを返します

文字列を返す_mvc api_に1つのメソッドを作成しました。しかし、stringを返す代わりに、_Json Object_を返したいと思います。これが私のコードです。

_    [AllowAnonymous]
    [HttpPost]
    [Route("resetpassword")]
    public IHttpActionResult ResetPassword(string email)
    {
        CreateUserAppService();
        string newPassword =_userAppService.ResetPassword(email);

        string subject = "Reset password";
        string body = @"We have processed your request for password reset.<br/><br/>";
        string from = ConfigurationManager.AppSettings[Common.Constants.FromEmailDisplayNameKey];
        body = string.Format(body, newPassword, from);

        SendEmail(email, subject, body, string.Empty);
        return Ok<string>(newPassword);
    }
_

ここではOk<string>(newPassword);を返します。次に_Json object_を返します。 Jsonオブジェクトを返すにはどうすればよいですか?

9
Ajay P

それを試してください:

[AllowAnonymous]
[HttpPost]
[Route("resetpassword")]
public IHttpActionResult ResetPassword(string email)
{
    //...
    return Json(newPassword);
}
11
Sergejs

あなたは実際にすでに重要なものを使用しています...

[HttpGet]
public IHttpActionResult Test()
{
     return Ok(new {Password = "1234"});
}
8
user3682091

これをCLRオブジェクトとして返す必要があるため、Web APIがJSONにシリアル化します。独自のPOCOクラスを作成するか、次のように実行できます。

 var passResponse =  new
              {
                  newPassword= yourNewPassword
              };

しかし、セキュリティの観点から、あなたがやっていることは正しくありません[〜#〜] never [〜#〜]プレーンパスワードをメールで送信する必要があります。リセットメールリンクを提供してユーザーパスワードをリセットする必要がありますトークンを使用してポータルにアクセスすると、新しいパスワードを入力する必要があります。ここで行っていることは安全ではありません。

5
Taiseer Joudeh

戻りオブジェクトを作成します。

_public class PasswordResponse{
    public string Password {get;set;}
    //...other stuff to pass...
}
_

次に、応答でタイプのインスタンスを返します。

return OK(new PasswordResponse(){Password = newPassword});

1
Kyle Huang