2014-03-13 72 views
0

我在AspNetMembership數據庫4個角色如何在asp.net中使用角色管理登錄後重定向用戶?

Admin 
User 
Dealer 
Operator 

我想

管理員用戶轉到管理/ Admin.aspx,

用戶的用戶去用戶/ User.aspx,

經銷商用戶轉到經銷商/經銷商.aspx,

經營者用戶登錄後轉到Operator/Operator.aspx。

我該怎麼辦?

我Login.aspx.cs

namespace MyWebApp { 
    public partial class Login : System.Web.UI.Page { 
    protected void Page_Load(object sender, EventArgs e) 

    { 

    } 

    protected void btnLogin_Click(object sender, EventArgs e) 

    { 
     if (Membership.ValidateUser(tbUserName.Text, tbPassword.Text)) 
     { 
      if(string.IsNullOrEmpty(Request.QueryString["ReturnUrl"])) 

      { 


       FormsAuthentication.SetAuthCookie(tbUserName.Text, false); 

      } 




      else 
       FormsAuthentication.RedirectFromLoginPage(tbUserName.Text, false); 
     } 

     else { 
      tbUserName.ErrorText = "Invalid user"; 
      tbUserName.IsValid = false; 
      } 
     } 
    } 
} 

回答

1

最簡單的辦法,雖然可能不是理想的方式,將重定向過程中進行檢查。我會設置你的角色爲常數或枚舉的某個地方,然後有條件地檢查:

if(string.IsNullOrEmpty(Request.QueryString["ReturnUrl"])) 
{ 
    FormsAuthentication.SetAuthCookie(tbUserName.Text, false); 

    if (HttpContext.Current.User.IsInRole(ADMIN)) 
    { 
     Response.Redirect(ADMIN_URL, true); 
    } 
    else if (HttpContext.Current.User.IsInRole(USER)) 
    { 
     Response.Redirect(USER_URL, true); 
    } 
    else if (HttpContext.Current.User.IsInRole(DEALER)) 
    { 
     Response.Redirect(DEALER_URL, true); 
    } 
    else if (HttpContext.Current.User.IsInRole(OPERATOR)) 
    { 
     Response.Redirect(OPERATOR_URL, true); 
    } 
    else 
    { 
     Response.Redirect(SOME_DEFAULT_URL, true); 
    } 
} 
else 
{ 
    FormsAuthentication.RedirectFromLoginPage(tbUserName.Text, false); 
} 

可以想象這個檢查將在圖書館被抽象成一個方法甚至更晚在該類別中。此方法將根據第一個遇到的角色執行重定向,因此如果用戶具有多個角色(例如DEALER/OPERATOR),則第一個角色將優先。

+0

非常感謝你的解答。 – user3107343

相關問題