Перенаправление членства в ASP.net MVC в зависимости от роли - PullRequest
4 голосов
/ 27 сентября 2010

У меня есть два типа ролей [Admin, HelpDeskAdmin].

У меня одно представление входа в систему (оба пользователя переходят по одной и той же ссылке для входа в систему), и я хочу проверить свою роль после входа в систему и перенаправитьих соответствующие страницы администратора после аутентификации.Приведенный ниже код не идентифицирует зарегистрированного пользователя как входящего в роль в первый раз и перезагружает страницу входа, при втором входе в систему она перенаправляет правильно.

Имеет ли это какое-то отношение к файлу аутентификациине быть на месте, когда он проверяет в первый раз?Как я мог выполнить этот сценарий?

[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
  if (MembershipService.ValidateUser(model.UserName, model.Password))
  {
     FormsService.SignIn(model.UserName, model.RememberMe);
     if (!String.IsNullOrEmpty(returnUrl))
     {
         return Redirect(returnUrl);
     }
     else
     {
         if (Roles.IsUserInRole("Admin"))
         {
              //go to admin landing page
              return RedirectToAction("Index", "Manage"); 
         }
          else if (Roles.IsUserInRole("HelpDesk"))
          {
              //go to helpdesk landing page
              return RedirectToAction("Index", "Interview"); 
          }
          else /******FIRST TIME THROUGH IT ALWAYS GOES HERE *******/
             return RedirectToAction("Index", "Home");  //not in any of those roles
      }
}
else
     {
       ModelState.AddModelError("", "The user name or password provided is incorrect.");
      }
}
 // If we got this far, something failed, redisplay form
return View(model);
} 

1 Ответ

7 голосов
/ 27 сентября 2010

Технически пользователь НЕ входит в систему до тех пор, пока не будет обработан следующий запрос и не будет установлен файл cookie для аутентификации ....

Либо выполните логику перенаправления в другом методе Action, либо, возможно, извлеките информацию о пользователе, используя Roles.IsUserInRole(model.UserName, "Admin") [[Примечание с указанием имени пользователя ]] внутри этого действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...