2

mvc4アプリケーションの組み込みアカウント登録およびログインコントローラー(およびそれぞれのモデル)を使用しています。アカウントを削除するための独自の方法があります。そこで、標準のログインコントローラにチェックを入れて、自分でアカウントを削除したかどうかをチェックしてから、その人を有益なページにリダイレクトしたいと思います。

ただし、コントローラーが呼び出されると、コード行が渡され、ユーザーがログインします。DBを確認しました。ユーザーのIsActive(アカウントを「アクティブ」および「非アクティブ」としてリストする)値に0が設定されているため、リダイレクトされる必要があります。しかし、彼は私のコード行が存在しないようにログインするだけです...

これはコントローラーのコードです。

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
 if (WorkerDAL.IsActive(model.UserName)) RedirectToAction("DisplayDeletedUserMessage", "Home");    //my redirect code

 if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
         {
                    return RedirectToLocal(returnUrl);
         }

     // If we got this far, something failed, redisplay form
 ModelState.AddModelError("", "The user name or password provided is incorrect.");
 return View(model);
}

私のDALクラスのコード:

public static bool IsActive(string _username)
{  TimeTrackerEntities db = new TimeTrackerEntities();
   foreach (Worker worker in db.Workers)
   {
       if (worker.UserName == _username)
       {
             if (worker.IsActive == 1) return true;
             if (worker.IsActive == 0) return false;
       }
   }
return true;
}

リダイレクトにユーザーに対して間違ったアクションを使用していますか?またはそのような明白な何か?私は基本的に迷子になっています...

編集-EricJ.とJonathonPageのおかげで、コードが機能するようになりました。あなたがた両方に感謝します!両方のコメントを正解としてどのようにメモできますか?

4

2 に答える 2

2

私はこの行を想定しています:

if (WorkerDAL.IsActive(model.UserName)) RedirectToAction("DisplayDeletedUserMessage", "Home");

読む必要があります

if (!WorkerDAL.IsActive(model.UserName)) RedirectToAction("DisplayDeletedUserMessage", "Home");

ユーザーがアクティブな場合、削除されたユーザーメッセージを表示するように現在リダイレクトしているようです。

于 2013-02-17T02:38:12.793 に答える
0

returnキーワードがありません:

RedirectToAction("DisplayDeletedUserMessage", "Home"); //my redirect code

読む必要があります:

return RedirectToAction("DisplayDeletedUserMessage", "Home"); //my redirect code

于 2013-02-17T11:32:03.873 に答える