2012-08-25 5 views
6

플라스크 애플리케이션을 구축 중이며 사용자가 인증 된 경우에만 정적 파일을 제공하고 싶습니다. 트래픽이 매우 적은 응용 프로그램입니다 (내부 용으로 만 사용). 나는 이것에 대해 어떻게 갈 것인가? 내가 생각한 한가지는 serve_static()을 사용하고 인증 검사 뒤에 넣는 것이지만 플라스크는 이미 콘텐츠를 제공하는 정적 디렉토리를 사용합니다.플라스크로 고정 된 파일 고정

+0

당신은 * 특정 * 정적 파일을 정통으로 원하거나 당신이 * 모든 * 정적에 대한 인증을 원하는합니까 다음 파일 (및/또는 전체 응용 프로그램)? –

+0

모든 정적 파일. 이미 앱에 대한 인증을 가지고 있으므로 앱에 대한 활성 세션을 확인하면 완벽 할 것입니다. – marcog

답변

10

간단히 flask.Flask를 서브 클래스와 send_static_file 방법 오버라이드 (override) :

class SecuredStaticFlask(Flask): 
    def send_static_file(self, filename): 
     # Get user from session 
     if user.is_authenticated(): 
      return super(SecuredStaticFlask, self).send_static_file(filename) 
     else: 
      abort(403) 
      # Or 401 (or 404), whatever is most appropriate for your situation 

참조 또한 the definition of send_static_file

+0

달콤한, 그 작품! – marcog

+0

해당 파일에 857 행이없는 것 같습니다. –

+1

@JesseAldridge - 고정 커밋을 가리키는 링크를 수정했습니다. 머리를 주셔서 감사합니다! –