2012-08-25 112 views
6

我正在构建一个烧瓶应用程序,并且我希望它仅在用户通过身份验证时才能提供一些静态文件。这是一个非常低流量的应用程序(仅供内部使用)。我将如何去做这件事?我想到的一件事是使用serve_static(),并将其放在身份验证检查之后,但使用的是已经提供内容的静态目录。用烧瓶保护静态文件

+0

你想真正的只针对*某些*静态文件或做你想做的*所有*静态认证文件(和/或整个应用程序)? –

+0

所有静态文件。我已经对该应用程序进行了身份验证,因此如果我可以针对该应用程序的活动会话进行检查,那么该应用程序将是完美的。 – marcog

回答

10

简单地继承flask.Flask并覆盖send_static_file方法:

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 - 我已经修复了指向固定提交的链接。感谢您的领导! –