2014-03-26 2 views
0

C#에서 asp.net 웹 사이트를 만들고 있는데 테이블이 Users(id, username, password, isAdmin) 인 slq 서버에 데이터베이스가 있습니다. isAdmin 열은 이고 기본값은 0이므로 사용자가 admin이면 isAdmin = 1 이외의 숫자는 isAdmin = 0입니다.사용자가 웹 사이트 및 폴더를 볼 수 있도록 제한

웹 사이트에 로그인 양식이 있으며 사용자가 로그인하면 isAdmin 값에 따라 Session("admin") 또는 Session("user")이 생성됩니다.

따라서 Session("user") 페이지와 admin.aspx 페이지의 액세스를 사이트의 업로드 폴더로 어떻게 제한 할 수 있습니까?

나는 관리자가

감사합니다 (isAdmin1에를 갱신) 관리자에 다른 사용자를 만들 수 있기 때문에, IIS에서 역할 관리를 추가 할 수 없습니다.

+0

IIS 7 +에서 일 것이다 –

+0

네, 나의 접근 방식은,하지만 어떻게 요 폴더에 대한 액세스를 거부? 그는 폴더에 URL을 쓸 수 있으며 페이지를 열람 할 수 있습니다 ... – dnisko

+0

페이지의 제한된 페이지 로딩. 내 대답을 확인하십시오. – Banana

답변

0

IIS에서 디렉터리 검색을 해제하십시오. 사용자가 폴더를 탐색하지 못하도록 web.config에 추가하십시오. 사용자가없는 관리자 인 경우는 또 다른 페이지로 리디렉션

<configuration> 
<location path="Secured"> 
    <system.webServer> 
     <directoryBrowse enabled="false" /> 
    </system.webServer> 
    </location> 
</configuration> 
+0

감사합니다. 나는 디렉토리 찾아보기를 생각하지 못했습니다 ... – dnisko

+1

어떻게하면 관리자가 아닌 사용자가 "admin.aspx"페이지로 이동하지 못하게 할 수 있습니까? –

+0

그는 두 가지 질문을했습니다. 하나는 관리자 페이지 (주석에서 대답) 제한에 대한 두 폴더에 대한 액세스를 제한에 대한. 원래 게시물의 댓글을 참조하십시오. 그는 정말로 대답하기를 원했기 때문에이 대답을 받아 들였습니다. –

2

이 논리의 내용 :

로그인 후 세션 var에 먼저 사용자 역할을 저장하십시오. 을 입력 한 다음 제한된 페이지의 page_load에서 사용자의 역할을 확인하고 관리자가 아닌 경우 관리자 계정으로 다시 로그인하도록 사용자를 리디렉션하십시오.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(session["role"].ToString().compareTo("admin")==0) 
    { 
    //load page stuff 

    } 
    else 
    { 
     Response.Redirect(your login page); 
    } 
} 
3

별도의 세션 변수에 표준 사용자 & 관리자를 보관하지 마십시오. 오히려 User 테이블에 매핑하고 사용자 정보를 일반적인 방식으로 저장하는 클래스를 만듭니다. 해당 클래스의 속성 중 하나는 .isAdmin (정수 또는 부울 값)입니다. 그런 다음 "admin.aspx"와 같은 간단한 내용을 확인할 수 있습니다.

UserInfo objUserInfo = (UserInfo)Session("user"); 

if (objUserInfo.isAdmin == 0) { 
    Response.Redirect("User.aspx"); 
} 
관련 문제