사용자 세션에 대한 권한 정보를 보유하기 위해 라이트 세션 개체를 사용하는 사용자 지정 인증 방법을 사용하고 있습니다. 이제는 각 페이지 (주로 마스터의 하위 페이지)에서 사용자가 페이지에 액세스해야하는지 여부를 알 수 있어야합니다.하위 페이지가있는 ASP.NET의 사용자 지정
페이지 클래스를 만들고이 클래스에서 하위 페이지를 파생해야합니까?
애플리케이션이 어떤 페이지에 어떤 역할을 맡고 있는지 알 수있는 가장 좋은 방법은 무엇입니까?
사용자 세션에 대한 권한 정보를 보유하기 위해 라이트 세션 개체를 사용하는 사용자 지정 인증 방법을 사용하고 있습니다. 이제는 각 페이지 (주로 마스터의 하위 페이지)에서 사용자가 페이지에 액세스해야하는지 여부를 알 수 있어야합니다.하위 페이지가있는 ASP.NET의 사용자 지정
페이지 클래스를 만들고이 클래스에서 하위 페이지를 파생해야합니까?
애플리케이션이 어떤 페이지에 어떤 역할을 맡고 있는지 알 수있는 가장 좋은 방법은 무엇입니까?
인증에 많은 유연성이 필요한 경우 사용자 정의 페이지 클래스를 사용하는 것이 좋습니다. 그렇지 않으면 Web.config
이면 충분합니다.
사용자 지정 역할 공급자로 연결하면 사실 asp.net 구성에 의존 할 수 있습니다. 그런 다음 인증을 구성하는 Web.config의에 정상적인 접근 방식을 사용하여 얻을
System.Web.Security.UrlAuthorizationModule.CheckUrlAccessForPrincipal(
"~/admin/test.aspx", principal, "GET"
);
: 당신은 사용자가 특정 페이지에 액세스 할 수있는 권한이 있는지 여부를 확인 할 수있는 방법이있다. 그렇게 할 때 페이지가 같은 폴더에 있으면 web.config를 해당 폴더에 추가하고 권한을 적절히 구성하면됩니다.
이 같은 시나리오에서 나는 폴더에 인증이 필요한 페이지를 넣어 그 같은 인증을 구성하는 Web.config의 위치 요소를 정의
<location path="protected">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
나는 기본 페이지 접근 방식을 좋아하지 않는다. 나에게 보안 정보를 확인하기에는 너무 늦었다. 자신의 HttpModule을 만들어 인증 정보를 데이터베이스/xml/...에 저장하거나 페이지의 리플렉션을 사용하여 읽을 수 있습니다.
context.Handler는 실행중인 클래스 페이지를 보유합니다. 따라서이 같은 일을 할 수 있습니다
을 내가 사용하는 코드의 일부를 복사, 그것은, 역할, 공개 페이지를 검사 이미지와 스크립트 (하지만 당신은뿐만 아니라 그것을 할 수있다)에 대한 검사 생략 :
// In the HttpModule:
public void context_PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpContext context = HttpContext.Current;
// Don´t validate permissions if the user wasn´t allowed by the asp.net security
// Neighter the advanced (custom) permissions are validated for non ASPX files.
if (!context.Request.FilePath.EndsWith(".aspx") || !context.User.Identity.IsAuthenticated)
return;
// Give full access to the unathorized error page, and logins, and so on...
string pageClass = context.Handler.GetType().BaseType.FullName;
string param = context.Request["p"];
if (!string.IsNullOrEmpty(param))
pageClass += "@" + param;
if (SecurityService.IsFullTrustClass(pageClass))
return;
if (SecurityService.Context.CurrentPerson == null)
{
LogOff();
return;
}
// Verify access permissions for the current page
IList<Role> roles = SecurityService.Context.CurrentPerson.Roles;
bool allow = SecurityService.HasAccessPermission(pageClass, roles);
if (!allow)
{
LogOff();
}
}
을