2014-03-13 2 views
0

나는 관리자 사용자가 관리자/Admin.aspx로 이동 asp.net에서 역할 관리를 사용하여 로그인 한 후 사용자를 리디렉션하는 방법은 무엇입니까?

에 내가 원하는

Admin 
User 
Dealer 
Operator 

AspNetMembership 데이터베이스에서 4 개 역할을 가진 사용자는 사용자/User.aspx로 이동

사용자,

대리점 사용자는 Dealer/Dealer.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); 
} 

은 알만이 검사는 도서관에서하는 방법으로 추상화 될 것이다 또는 나중에 클래스 내의 : 나는 확인 조건부 다음, 상수 또는 열거 어딘가로 역할을 설정합니다. 이 방법은 처음 발생한 역할을 기반으로 리디렉션을 수행하므로 사용자가 여러 역할 (예 : 대리점/운영자)을 가진 경우 첫 번째가 우선합니다.

+0

고맙습니다. 답변에 의해 결정되었습니다. – user3107343