2014-02-22 4 views
2

서비스 인증/권한 부여를 처리하는 방법은 여러 가지가 있지만 정적 파일에는 사용할 수 없습니다.ServiceStack - 정적 파일에 대한 무단 액세스를 방지합니다.

동작을 서비스와 동일하게 구성 할 수있는 방법이 있습니까? 인증되지 않은 경우 index.html에 대한 요청은 보안 된 dto/service에 대한 요청과 동일하게 로그인 페이지로 리디렉션되어야합니다.

현재 RawHttpHandlers를 찾고 있지만 파이프 라인이 너무 빠르기 때문에 apphost 구성에서 인증 설정을 어떻게 얻을 수 있습니까? 즉, 내장 정적 파일 처리에 액세스하기 전에 실행됩니다 ServiceStack's Request Pipeline에서 유일하게 사용자 정의 핸들러가 있기 때문에 미리 Gjergji

답변

1

에서

덕분에 당신은 IAppHost.RawHttpHandlers를 사용해야합니다.

그러나 당신은 여전히 ​​예를 들어, 사용 가능한 확장 방법으로 사용자 세션에 액세스 할 수 있어야합니다 :

this.RawHttpHandlers.Add(httpReq => 
{ 
    var isStaticFileRequest = httpReq.PathInfo.StartsWith("/static"); 
    if (isStaticFileRequest) 
    { 
     var session = httpReq.GetSession(); 
     if (!session.HasRole("TheRole")) 
      return new ForbiddenHttpHandler(); 
    } 
    return null; 
}); 
는, 정적 파일에 대한 요청의 경우이 핸들러는 단순히이 경우 검사

경로 정보 시작 /static을 사용하고 사용자 세션에 필요한 역할이 있는지 확인하는 경우에는 금지 된 요청을 반환하고 그렇지 않으면 null을 반환하여 ServiceStack에 요청 실행을 계속 진행합니다.

참고 :

var authRepo = HostContext.Resolve<IAuthRepository>(); 
:이 필요한 경우는 HostContext.Resolve, 예컨대와 ServiceStack 외부에서 등록 된 임의의 의존성에 액세스 할 수 있습니다
관련 문제