Asp.net mvc ASP.net MVC成员身份重定向取决于角色

Asp.net mvc ASP.net MVC成员身份重定向取决于角色,asp.net-mvc,asp.net-mvc-2,authentication,login,roles,Asp.net Mvc,Asp.net Mvc 2,Authentication,Login,Roles,我有两种类型的角色[管理员,HelpDeskAdmin] 我有一个单一的登录视图(两个用户进入同一链接登录),我想在登录后检查他们的角色,并在验证后重定向到各自的管理员页面。下面的代码在第一次登录时没有将登录用户标识为该角色,并在第二次登录时重新加载登录页面。登录页面将正确重定向 这是否与身份验证cookie在第一次检查时未就位有关?我怎样才能完成这个场景 [HttpPost] public ActionResult LogOn(LogOnModel model, string returnUr

我有两种类型的角色[管理员,HelpDeskAdmin]

我有一个单一的登录视图(两个用户进入同一链接登录),我想在登录后检查他们的角色,并在验证后重定向到各自的管理员页面。下面的代码在第一次登录时没有将登录用户标识为该角色,并在第二次登录时重新加载登录页面。登录页面将正确重定向

这是否与身份验证cookie在第一次检查时未就位有关?我怎样才能完成这个场景

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

在处理下一个请求并设置身份验证Cookie之前,从技术上讲,用户不会登录


可以在另一个操作方法中执行重定向逻辑,也可以使用
角色.IsUserInRole(model.UserName,“Admin”)
[[注意指定此操作中的用户名][/strong>]]提取用户信息。

好的,谢谢,我将重定向逻辑移动到一个LoginDirect操作方法中,一旦登录被验证,我就会重定向到该方法。