2010-09-27 88 views
4

我有兩種類型的角色[Admin,HelpDeskAdmin]。根據角色,ASP.net MVC會員重定向

我有一個登錄視圖(兩個用戶都去同一鏈接進行登錄),我想在登錄後檢查他們的角色,一旦通過身份驗證就重定向到他們各自的管理頁面。下面的代碼不會將第一次登錄的用戶標識爲角色並重新加載登錄頁面,這是他們第二次正確登錄時重定向。

這與第一次檢查時身份驗證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); 
} 

回答

7

,直到下一個請求被處理和Authenication Cookie被設置的用戶在技術上沒有登錄....

要麼根本重定向邏輯在另一個Action方法或也許使用提取用戶信息Roles.IsUserInRole(model.UserName, "Admin") [[注意指定用戶名]]。

+1

好的,謝謝,我將重定向邏輯轉移到LoginRedirect Action方法中,一旦登錄驗證,我就重定向到該方法。 – jrob 2010-09-27 15:28:06

相關問題