无法修改MVC 4 bult-in登录控制器

时间:2013-02-17 02:34:09

标签: c# asp.net-mvc asp.net-mvc-4

我正在使用mvc4应用程序内置的帐户注册和登录控制器(及其各自的型号)。我有自己的删除帐户的方法。所以我想检查标准登录控制器,以便检查我是否自己删除了帐户,然后将该人重定向到信息页面。

然而,当控制器被调用时,它只是通过我的代码行并仍然记录用户。我已经检查了数据库。用户将0设置为其IsActive(将帐户列为“活动”和“非活动”)值,并应重定向。但他只是登录我的代码行不存在......

这是控制器中的代码:

[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;
}

我是否使用了错误的操作来重定向用户?还是那种明显的东西?我基本上迷路了...

编辑 - 感谢Eric J.和Jonathon Page,代码现在正在运行。谢谢你们俩! 我怎样才能将他们的评论都注明为正确答案?

2 个答案:

答案 0 :(得分:2)

我假设这一行:

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

应该阅读

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

如果用户 处于活动状态,您似乎正在重定向以显示已删除的用户消息。

答案 1 :(得分:0)

您缺少return关键字:

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

应阅读:

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