2015-10-22 32 views
0

控制器具有這樣的功能:如何使ASP.NET身份帳戶控制器中的方法返回我自己的錯誤消息?

private IHttpActionResult GetErrorResult(IdentityResult result) 
     { 
      if (result == null) 
      { 
       return InternalServerError(); 
      } 
      if (!result.Succeeded) 
      { 
       if (result.Errors != null) 
       { 
        foreach (string error in result.Errors) 
        { 
         ModelState.AddModelError("", error); 
        } 
       } 
       if (ModelState.IsValid) 
       { 
        // No ModelState errors are available to send, 
        // so just return an empty BadRequest. 
        return BadRequest(); 
       } 
       return BadRequest(ModelState); 
      } 
      return Ok(); 
     } 

我有一個忘記密碼的方法,我想這回一個錯誤,如果用戶名沒有找到:

​​

回答

2

可以創建新IdentityResult對象並將錯誤消息傳遞給ctor。 (它指定結果是失敗並將錯誤消息添加到Errors屬性)。

public async Task<IHttpActionResult> ForgotPassword(ForgotPasswordBindingModel model) 
{ 
    var user = await UserManager.FindByNameAsync(model.UserName); 
    if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id))) 
    { 
     IdentityResult result = new IdentityResult("Username not found"); 
     return GetErrorResult(result); 
    } 
} 
相關問題