2009-10-15 4 views
0

사용자가 로그인하여 몇 페이지를 탐색 할 수있는 ASP.NET 3.5 웹 사이트를 구축하려고합니다. 특정 페이지를 볼 수 있도록 특정 사용자를 제한하고 싶지만 사용자 정의 및 유연한 시스템이 필요합니다. 나는 이것의 MS 버전을 보았다. 그러나 내가 찾고있는 것이 아니다. 누구든지 좋은 온라인 기사 나 비디오 자습서로 안내 할 수있어서 더 많은 연구를 할 수 있습니다. 감사!ASP.NET 액세스 컨트롤

P. System.Web.UI.Page에서 상속 한 클래스를 만들어 보았습니다. 일부 검사를 수행했지만 엉망이되었습니다. 다른 모든 페이지는 해당 공통 페이지에서 상속받습니다. 이것은 일반적인 관행입니까? 과거에이 문제를 어떻게 해결 했습니까?

+2

를 시작하려면? 그것은 우리가 당신이 찾고있는 것을 이해하는 데 도움이 될 것입니다. –

+0

회원 자격, 역할 등의 클래스가 내가 가지고있는 것과 작동 할 수 있는지 확실하지 않아서 여전히 ASP.NET에 익숙하지 않습니다. 이미 기존 사용자 및 역할 표가있는 프로젝트를 인계 받고 관리자가 새 역할을 만들어 특정 사용자에게 할당 할 수있는 시스템을 만들어야합니다. 마지막으로 특정 페이지뿐만 아니라 특정 요소 (예 : 데이터의 GridView)를 특정 사용자에게만 제한해야합니다. 예 : '사용자 == 관리자 계좌 번호 표시 else 아무 것도 표시하지 않습니다. ' –

답변

1

이 방법을 구현하는 가장 좋은 방법은 양식 인증과 사용자 지정 역할 공급자를 결합하는 것입니다.

양식 인증이 작동하려면 MS가 인증에 사용하는 전체 데이터베이스 설치를 사용할 필요가 없습니다.

사용자가 직접 데이터베이스를 소유하고 사용자를 확인하고 쿠키 만 설정할 수 있습니다.

String UserName = "CoolGuy"; 
Boolean isValidUser = YourClass.YourMethod(UserName); 
if (isValidUser) 
{ FormsAuthentication.setAuthCookie(UserName, false); } 

YourMethod가 true를 반환하면 세션에 대한 사용자 "CoolGuy"가 인증됩니다.

사용자 지정 역할 공급자와 함께 사용할 수 있습니다. 그러면 User.IsInRole ("Role")을 확인할 수있는 기능이 제공됩니다. 귀하의 코드입니다.

당신이 MSFT 버전은 사용자의 요구에 대한 불충분 어떻게 설명 할 수 ... 좋은 참고가 여기에 .. CustomRoleProvider와 http://davidhayden.com/blog/dave/archive/2007/10/17/CreateCustomRoleProviderASPNETRolePermissionsSecurity.aspx

  • 라자
+0

감사합니다. Raja. 로그인에 성공한 후 기본 페이지가 아닌 다른 페이지로 사용자를 전달하는 방법을 알고 있습니까? Response.Redirect를 사용하고 있지만 FormsAuthentication.RedirectFromLoginPage 메서드를 보았습니다. 예를 들어, 사용자가 Default.aspx 페이지에 성공적으로 로그인하면 Orders.aspx로 해당 파일을 찾으려고합니다. –

+0

리디렉션 페이지가 동일 할 경우. Response.Redirect()를 사용하는 것이 편리한 방법입니다. 폼 인증 쿠키를 설정 한 후에해야합니다. –

+0

사용자가 일반적으로 보안 페이지를 직접 요청합니다 (asd.aspx) ... 페이지가 보안되어 있으므로 로그인 페이지로 리디렉션됩니다 ... 사용자가 asd.aspx를 다시 가져 가고자하는 경우 성공적인 로그인 후 ... FormsAuthentication.RedirectFromLoginPage() 메서드를 사용해야합니다. –

1

글쎄, 앱의 정확한 세부 사항을 모르면 회원 API에 내장 된 역할 관리자를 사용할 수 있습니다.

기본적으로 각 페이지에 대한 역할을 만들고 사용자가 원하는 역할 (페이지)을 할당하게됩니다. 각 페이지 뒤에있는 코드에서

의 On_Load 이벤트에, 나는 단순히 그렇지 않으면 당신은거야, 당신은 상속 페이지를 사용하여 재고 할 수 있습니다 로직 이런 종류의 방법을

if(Roles.IsUserInRole(rolePageName)) 
{ 
    //Continue page loading logic 
} 
{ 
    //Redirect or transfer the user elsewhere 
} 

를 부를 것이다 페이지의 URL을 검색하고 적절한 다른 Roles.IsUserInRole 메소드를 호출하기 위해 if-else 또는 switch 명령문의 긴 목록에 전달하는 방법을 찾아야합니다.

관련 문제