当前位置: 首页 > 知识库问答 >
问题:

python flask before\u请求排除/静态目录

赖翰
2023-03-14

由于下面的回答,我有一个“请求前”功能,如果用户尚未登录,它会将用户重定向到“登录”:

请求前烧瓶-添加特定路线的例外情况

这是我的before_请求的副本:

@app.before_request
def before_request():
    if 'logged_in' not in session and request.endpoint != 'login':
        return redirect(url_for('login'))

但是,除非用户登录,否则不会提供静态目录中的文件。

在我的/login页面上,我正在从/静态目录中获取一个css文件,但由于这个before_request,它无法加载。

我已经使用apache部署了这个应用程序mod_wsgi在我的apache配置文件中,我甚至包含了/静态目录作为站点的DocumentRoot。

如何添加异常以在用户不登录的情况下提供应用程序的/静态文件,但仍将此before_request用于烧瓶应用程序定义的路由?

共有3个答案

龚振
2023-03-14

我确实同意Apache方法,但为了快速修复,我在before_request()函数的开头使用了以下逻辑:

if flask.request.script_root == "/static":
  return
别宏盛
2023-03-14

我认为有一种解决方案比检查请求更干净。路径。

if 'logged_in' not in session and request.endpoint not in ('login', 'static'):
    return redirect(url_for('login'))
邢修明
2023-03-14

您需要向Apache配置文件(或.htaccess文件,如果您没有访问.conf文件的权限)添加一个Alias或AliasMatch指令,以确保Apache为您的静态文件服务,而不是Flask。确保您提供了一个目录,以允许Apache web服务器访问您的静态路径。(另外,如果您正在编辑.conf文件,请不要忘记重新启动Apache,这样您所做的更改就会被提取出来)。

作为临时的权宜之计(或者为了便于在开发中使用),您还可以检查以确保字符串/静态/不在request.path中:

if 'logged_in' not in session \
    and request.endpoint != 'login' \
    and '/static/' not in request.path:
 类似资料:
  • 问题内容: 如果我将spring应用程序映射为处理所有传入请求(),则对静态内容的请求将返回404。例如,即使当Spring拦截请求时资源存在,对“ myhost.com/css/global.css”的请求也将返回404。 替代方法是将SpringMVC映射到子目录(例如’/ home / ‘),但是在这种情况下,必须在应用程序内的所有链接中传递此目录。有没有一种方法可以将SpringMVC映射

  • 我是新手,请放心。目前,我正在使用放心的API自动化。我有以下方案要处理 我们有两个 API(例如:API1、API2),API1 会给出用户详细信息的列表。我需要将这些详细信息作为第二个 API 请求的一部分发送。 API1 -响应 API2 -请求:。:在API2请求中,我需要发送“sourceUserId”和“source”详细信息。 userSourceMeta详细信息会根据用户动态变化。

  • 我尝试使用jQuery请求数据,它起作用了!所以很明显,它唯一的角度是造成一个问题! 编辑2-Headers AngularJS请求头: accept:application/json,text/plain,/accept-encoding:gzip,deflate,sdch accept-language:en-gb,en-美国;q=0.8,en;q=0.6 cache-control:no-c

  • 解决方案: 我为我的api请求准备了这段代码,当我使用调试器时,它可以工作。 我可以在PlayerStats课程中看到结果,但现在我遇到了一个问题。 但是在这个不工作: 统计数据。课程: 我需要一种从 不工作,因为零参数。 如果我试图修复: IDE说它需要一个或一个断言调用,但如果我尝试使用断言调用,应用程序就会崩溃,我会得到以下错误: 2020-03-05 18:58:02.803 23276-

  • 我正试图排除一个目录被声纳分析。我在文件中定义了以下属性:

  • 下面使用Siteminder筛选器, @override protected void configure(HttpSecurity http)引发异常{http.AddFilterBefore(siteminderFilter(),RequestHeAderAuthenticationFilter.Class).........} @bean public RequestHeaderAuthen