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

标签 asp.net-mvc asp.net-mvc-2 authentication login roles

我有两种类型的角色 [Admin, HelpDeskAdmin]。

我有一个单一的登录 View (两个用户都转到相同的登录链接),我想在登录后检查他们的角色,并在通过身份验证后重定向到他们各自的管理页面。下面的代码第一次没有将登录用户识别为角色并重新加载登录页面,第二次登录时它会正确重定向。

这是否与第一次检查时未到位的身份验证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 之前,用户不会登录....

要么在另一个 Action 方法中执行重定向逻辑,要么使用 Roles.IsUserInRole(model.UserName, "Admin") 提取用户信息。 [[注指定用户名 ]] 来自此操作。

关于asp.net-mvc - ASP.net MVC 成员身份重定向取决于角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3800973/

相关文章:

c# - 保存 LINQ-To-SQL 实体时出现 "Specified cast is not valid"错误

asp.net-mvc - 访问asp.net mvc Controller ActionResult

c# - 如何仅在满足特定条件时自动增加复合键 ID?

python - django 自定义 UserManager 中的 self.model()

c# - 模拟和 HttpContextBase.get_User()

asp.net - 本地 Azure 开发环境出现 403 错误的原因是什么?

c# - CS0234 引用本地项目

asp.net - 如何在 ASP.NET MVC 2 中获取 html.textbox 输入的值

javascript - 使用客户端 Javascript 时如何保密 API key ?

python - Pyramid View 重定向