2011-03-02 7 views
1

enter image description here폼 인증


다음과 같이 문제는 : 방문자가 관리 폴더의 페이지에 액세스하려고
경우 그는 여기에, 관리자 폴더에있는 로그인 페이지로 리디렉션해야 나는 자신의 사용자 이름과 암호를 가져다가 SQL Server 테이블에서이 항목을 확인한 다음 인증 된 경우 기본 페이지로 리디렉션되고 Admin 폴더의 모든 페이지에는 액세스 할 수 있지만 사용자 폴더에는 아무 페이지에도 액세스 할 수 없습니다
여기에 중요한 것은 관리자 폴더의 로그인 페이지와 사용자 폴더의 로그인 페이지가 다릅니다.
같은 시나리오는
, 당신의 대답 Admin 폴더 내의 각 페이지에서

답변

1

을 설명해주십시오 사용자 폴더
이 기능을 달성하기 위해 올바른 방법이 무엇인지 알려주세요위한 페이지의 C# 코드의 첫 번째 행으로 - 세션 데이터에 "IsAllowedAdmin"변수가 있는지 확인하십시오. 없으면 관리자 로그인 페이지로 직접 리디렉션하십시오.

관리자 로그인 페이지에 로그인 할 때 - 사용자가 인증을 마친 경우 - IsAllowedAdmin 변수가 세션 데이터에 true로 저장됩니다.

그리고 사용자 페이지에서 비슷한 일 .... 당신이 가진 수있는 관리자 페이지에서

그래서 ... ... 유사 다음

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["AdminOk"] != null) 
    { 
     bool bAdminOk = false; 
     try 
     { 
      bAdminOk = (bool) Session["AdminOk"]; 
     } 
     catch 
     { 
     } 
     if (!bAdminOk) 
     { 
      Response.Redirect("~/Admin/login.aspx"); 
     } 

    } 
} 

그리고이 (그러나와 다른 세션 변수 이름) ...

+0

양식 인증 기술을 통해이를 수행 할 수 있습니까? – Student

+0

@Student : FormsAuthentication에는 역할 개념이 없습니다. 당신이 그것을 할 수있는 유일한 방법은 익명의 사용자를 거부하는 것입니다. RoleProvider는 역할의 개념을 제공하지만 사용중인 것은 아닙니다. – Greg

+0

코드가 간단하지만 좋은 방법 일 수도 있습니다. 우리는 다른 방식으로 동일한 작업을 수행 할 수 있습니까? 아니면 우리의 목적을 달성하기 위해이 방법 만 사용할 수 있습니까? – Student

1

Forms/Membership 인증을 사용하는 경우 두 개의 다른 로그인 페이지가 필요하지 않지만 이것이 가능하지는 않습니다. 대신 단일 로그인을 사용하십시오 사용자가 "관리자"인지 또는 "관리자"인지에 따라 다르게 리디렉션합니다. 일반 사용자. 폼 인증은 Roles을 사용하여 이에 대한 메커니즘을 제공합니다.

당신이 당신의 Web.config에으로 roleManager 섹션을 추가 즉, 필요한 역할을 활성화하려면 :

<roleManager enabled="true" defaultProvider="SqlRoleManager"> 
    <providers> 
     <add name="SqlRoleManager" type="System.Web.Security.SqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/"/> 
    </providers> 
</roleManager> 

그런 다음 인증 섹션에서 사용자가 일반 사용자의 페이지를 보호하지만, 허용 할 수 있습니다 관리자 사용자 :

<authorization> 
    <allow roles="Admin"/> 
    <deny users="*"/> 
</authorization> 

사용자가 (즉 리디렉션 할 위치를 결정할 때) 관리 역할에 있는지 여부 그것은 코드를 테스트하는 것은 매우 간단 :

if (Membership.ValidateUser(user, pass) && Roles.IsUserInRole(user, "Admin")) 
{ 
    //... 
} 
+0

나는'Role'을 처음 사용했다. 당신은 나에게이 개념을 이해할 수있는 링크를 제공 할 수 있겠 느냐? – Student

+0

@Student : http://msdn.microsoft.com/en-us/library/ff647401.aspx를 확인하고, 일반적으로 msdn을 확인한다. '회원 역할 msdn '을 검색하면 업데이트 된 정보가 많이 있습니다. – BrokenGlass