0

我的挑战是根据用户的角色将用户重定向到他们的区域我放置了一个箭头以重定向到一个区域,但如果角色不是此角色类型,我需要放置一个异常来处理另一个区域。

我将如何修改默认登录控制器操作:

[HttpPost]
    public ActionResult LogOn(LogOnModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            if (Membership.ValidateUser(model.UserName, model.Password))
            {
                FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                    && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                {
                    return Redirect(returnUrl);
                }
                else
                {
                  return RedirectToAction("Index", "Home", new { area = "Client" });

                }
            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }
4

2 回答 2

1

我想到了。这个直截了当的答案绝对没有任何帖子,所以请随时重新发布:

        [HttpPost]
    public ActionResult LogOn(LogOnModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            if (Membership.ValidateUser(model.UserName, model.Password))
            {
                FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                    && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                {
                    return Redirect(returnUrl);
                }
                else
                {
                    if (Roles.IsUserInRole(model.UserName, "UserRoleOne"))
                    {
                        return RedirectToAction("Index", "Home", new { area = "AreaForUserRoleOne" });
                    }
                    else
                    {
                        if (Roles.IsUserInRole(model.UserName, "UserRoleTwo"))
                        {
                            return RedirectToAction("Index", "Home", new { area = "AreaForUserRoleTwo" });
                        }
                    }
                }
            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }
于 2012-06-30T07:17:14.757 回答
0

这可能是您正在寻找的:

   [Authorize(Users="Smith, Steve", Roles="Admin, PowerUser")]

用户:允许访问操作方法的用户名的逗号分隔列表。

Roles :以逗号分隔的角色名称列表。要访问操作方法,用户必须至少具有这些角色之一。

http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx

于 2012-06-30T07:27:03.120 回答