2012-06-30 36 views
0

我的挑戰是用戶根據自己的角色 他們的區域,我把箭頭重定向到一個區域重定向,但我需要放置一個異常處理,如果作用的另一個領域不是這個角色類型。MVC3 - 基於角色的用戶登錄並重定向

我怎麼會修改默認登錄控制器動作:

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

您可以用'如果(User.IsInRole( 「管理」))'之類的這個東西。 –

+0

對不起,我錯了解釋,只是說,如果你看一下實際的代碼,我把視覺箭頭在那裏我重定向用戶到一個區域...... ============> –

回答

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."); 
      } 
     } 
+0

很難相信沒有其他人還需要這個。感謝你的回答。 – HendPro12