2017-10-23 11 views
0

私がPostmanからFindByNameOrEmailAsyncメソッドを呼び出すと、ユーザーが返されます。しかし、いったんUIを介して値を送信すると、このメソッドはnullを返します。 この値はusernameOrEmailAddress変数にバインドされていますが、メソッドに来るとnullを返します。ABP FindByNameOrEmailAsyncメソッドがヌル値を返す

誰かが私を助けることができますか?

<input type="email" id="emailInput" class="form-control" maxlength="255" placeholder="Enter your email" required /> 
    <button id="requestResetEmail" class="btn btn-primary btn-block btn-flat">Request password reset</button> 


     abp.ui.setBusy(
     $('#LoginArea'), 
     abp.ajax({ 
      url: abp.appPath + 'Account/ForgotPassword', 
      type: 'POST', 
      data: JSON.stringify({ 
       usernameOrEmailAddress: $('#emailInput').val(), 
       returnUrl: window.location.hash 
      }) 
     }) 

    public async Task<ActionResult> ForgotPassword(ForgotPasswordViewModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      var user = await 
      _userManager.FindByNameOrEmailAsync(model.UsernameOrEmailAddress); 

     if (user == null || !(await _userManager.IsEmailConfirmedAsync(user.Id))) 
      {     
       return View("ForgotPasswordConfirmation"); 
      } 
     } 
     else 
     { 
      return View(model); 
     } 
    } 

答えて

3

正しいテナントを設定する必要があります。

ユーザー名やメールアドレスがテナント間で一意である場合は、IUnitOfWorkManagerを注入し、実行します。

using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MayHaveTenant)) 
{ 
    var user = await _userManager.FindByNameOrEmailAsync(model.UsernameOrEmailAddress); 
    // ... 
} 

_unitOfWorkManager.Currentnullある場合は、上記のコードをラップ:それは、このエラーを与える

using (var uow = _unitOfWorkManager.Begin()) 
{ 
    // Above code goes here 

    uow.Complete(); 
} 
+0

CurrentUnitOfWork 'は現在のコンテキストには存在しません。 CurrentUnitOfWorkはサービスレイヤで使用されており、正常に動作します。この.csクラスは、ログインを実装するWebプロジェクト内にあります。私はリセットパスワード機能を実装するはずです。あなたはクラス内で識別可能なCurrentUnitOfWorkに対して何をすべきか教えてください。 – sav

+0

'IUnitOfWorkManager'を注入し、代わりに' _unitOfWorkManager.Current'を使用してください。 – aaron

+0

_unitOfWorkManagerがnull値を返しました。したがって_unitOfWorkManager.Begin()を追加します。その後、(_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MayHaveTenant))を呼び出し、ユーザーを返します。ありがとうございました – sav

関連する問題