문제

SQL Server를 데이터베이스로, C# 2005는 프로그래밍 언어로 ASP.NET 2.0 웹 사이트를 가지고 있습니다. 웹 사이트는 거의 완전하고 모든 링크가 제대로 작동합니다. 그러나 일반 사용자가 두 페이지를 열지 못하게하고 싶습니다. 사용자가 해당 특정 링크를 클릭하면 ASP 로그인 컨트롤이 포함 된 다른 페이지가 열립니다. 사용자는 유효한 userID 및 비밀번호를 제공하여 제한 페이지를 가리키는 링크를 표시해야합니다. 그러나 초보자이기 때문에 ASP 로그인 컨트롤의 전체 힘을 활용하는 방법을 모르겠습니다. 사용자가 제한된 페이지의 정확한 URL을 알게되면 로그인 컨트롤을 우회하고 URL을 주소 표시 줄에 입력하여 해당 페이지에 직접 액세스 할 수 있습니다. 나는 이것을 막고 싶다. 사용자가 주소 표시 줄에 직접 URL을 입력하는 경우 사용자가 로그인 컨트롤을 통해 검증되었는지 여부를 확인하고 페이지를 표시하거나 사용자를 로그인 페이지에 표시하는지 여부를 확인해야합니다.

이 기능을 어떻게 구현합니까 ??

감사합니다.

Lalit Kumar Barik

도움이 되었습니까?

해결책

매번 사용자의 로그인 상태를 확인해야합니다. Page_Load() 권한을 제어 해야하는 페이지의 이벤트 또는 간단히 인증 코드를 다른 모든 파일에 포함될 CS 파일에 넣습니다.

선택한 인증 아키텍처 (세션 변수를 사용하거나 쿠키와 함께 세션 ID를 작성)에 따라 코드를 적절하게 조정해야합니다.

가장 간단한 방법은 세션 객체를 통해 로그인을 관리하는 것입니다. 사용자가 올바른 자격 증명으로 올바르게 로그인하면 설정할 수 있습니다. Session["logged_in"] = true. 그리고 모든 것에 Page_Load() 보호하려는 페이지의 이벤트는 다음 점검을 수행해야합니다.

page_load () 함수의 시작 부분 에서이 코드를 추가하십시오.

  if (Session["logged_in"] != null && (bool)Session["logged_in"] == true){
    Response.Write("I'm logged in!");
  }else{
    Response.Write("I'm not logged in.");
  }

간단한 인트라넷 응용 프로그램의 경우에는 괜찮지 만 더 안전한 로그인 아키텍처에 들어가려면 세션 변수에만 다시 재 할소하는 것이 안전하지 않기 때문에 주제에 대해 자세히 알아보십시오.

다른 팁

당신은 당신은 그것을보고 싶을 것입니다 위치 웹 구성의 Secton.

이 섹션에서는 액세스 권한을 페이지 수준으로 정의 할 수 있으므로 사용자가 보안 페이지의 URL을 알고 있는지 여부는 문제가되지 않습니다.

그래서 당신은 다음과 같은 것을 추가 할 것입니다.

<location path="SecuredPage.aspx">
  <system.web>
     <authorization>
        <deny users="?"/>
     </authorization>
  </system.web>
</location>

"deny user ="? ""비트는 "모든 익명 사용자 거부"라고 말합니다.

사용중인 경우 특정 역할 만 허용하도록 설정할 수도 있습니다.

승인 섹션에 대한 자세한 내용은 다음을 참조하십시오.

승인 요소

이것은 ASP.NET 회원 서비스를위한 음식입니다. 보세요 이 기사 그리고 또한 위대한 시리즈 4Guysfromrolla에서.

멤버십을 사용하면 로그인 컨트롤로 사용되는 사용자/비밀번호 정보를 저장할 수 있습니다. 인증 구성과 함께 특정 사용자 또는 역할로 특정 페이지에 대한 액세스를 직접 좁힐 수 있습니다.

각 사용자의 로그인 세션을 관리하는 방법이 필요합니다. 다음은 도움이 될 수있는 몇 가지 튜토리얼입니다.

http://www.codeproject.com/kb/session/nocookiesessionlogin.aspx

http://www.dotnetspider.com/resources/5597 handling-session-for-login-logout.aspx

사용자를위한 역할 테이블을 만들 것입니다. 로그인하는 모든 사람은 '정상적인'역할을합니다. 자격 증명으로 지정하는 특별 용도는 웹 사이트의 페이지 또는 섹션에 액세스하기 위해 할당 된 역할을받습니다. 특정 사용자 (자신과 같은)는 자동으로 모든 것에 액세스 할 수있는 관리자 역할을 수행합니다.

boolean을 반환하는 CheckisInroles ( 'admin', 'normal', 'nowlyroleyouchoose')라는 함수를 발사하십시오. 사실이라면 페이지를로드하십시오. 그렇지 않다면.

올바른 역할이 아닌 경우 링크를 표시하지 않는 것이 좋습니다.

이것은 모든 사람이 한 번 로그인 한 다음 매번 로그온하지 않고 필요한 모든 페이지에 액세스 할 수있는 이점이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top