2014-02-04 6 views
0

Когда я перехожу на свою домашнюю страницу, тэг [Авторизовать] перенаправляет меня на страницу входа (хорошо!). Но после ввода учетных данных кажется, что он просто обновляет страницу входа (плохая!).Как остановить цикл авторизации?

Главная Контроллер:

[Authorize] 
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 
    //other code 
} 

Контроллер счета:

[Authorize] 
public class AccountController : Controller 
{ 
    [HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public ActionResult Login(LoginModel loginModel, string returnUrl) 
    { 
     UserRoles userRoles = new UserRoles(); 
     UserRole userRole = userRoles.DbSet.FirstOrDefault(u => u.User == loginModel.UserName); 

      if (ModelState.IsValid && Membership.ValidateUser(loginModel.UserName, loginModel.Password)) 
      { 
       return RedirectToLocal(returnUrl); 
      } 

      ModelState.AddModelError("", "Bad login");    

      return View(loginModel); 
    } 
    //other code 
} 

Edit 1:

loginModel передается автоматически после того, как я заполнить формы входа.

returnUrl - ранее посещаемый адрес, в данном случае это домашний контроллер. По умолчанию это также домашний контроллер.

Я думаю, что проблема может быть вызвана тем, что пользователь не установил подлинность, поэтому, когда он возвращается к Домашнему контроллеру, тег [Авторизовать] активируется снова. Ребята, что вы думаете?

Edit 2: В Global.asax.cs:

public class MvcApplication : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     WebApiConfig.Register(GlobalConfiguration.Configuration); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 
    } 
} 

Нет пользовательского маршрута таблица здесь все по умолчанию.

В Web.Config:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" /> 
</authentication> 

Правильно подключен к моему Вход функций.

Проверка подлинности членства, я его протестировал.

ответ

2

Попробуйте это:

if (ModelState.IsValid && Membership.ValidateUser(loginModel.UserName, loginModel.Password)) 
{ 
    FormsAuthentication.SetAuthCookie(loginModel.UserName, true); 
    return RedirectToLocal(returnUrl); 
} 
+0

OH MY GOD! Полностью забыл мои куки в духовке! Огромное спасибо! –

Смежные вопросы