我正在推出一个旧的Flask应用程序并尝试让它运行。但是,flask.redirect()
给我带来了一些麻烦。这曾经在以前工作过,可能在最近的Flask版本中有所改变吗?
当我访问应用程序索引页面(/
)时,由于索引视图上的/login
装饰器(见下文),它应该将我重定向到requires_auth()
。它确实重定向我,但主机不正确。我最终选择flux.example.com/login
。
flux/login
结尾
def requires_auth(func):
''' Decorator for view functions that require basic authentication. '''
from .models import Session, User
@functools.wraps(func)
def wrapper(*args, **kwargs):
app.logger.warn('Checking authentication ..') # added for debug purposes just now
app.logger.warn('Note: url_for(\'login\'): {}'.format(url_for('login')))
user_name = session.get('user_name')
user_passhash = session.get('user_passhash')
with Session() as db_session:
user = User.get_by(db_session, user_name, user_passhash)
if not user:
return redirect(url_for('login'))
request.user = user
return func(*args, **kwargs)
return wrapper
这是响应标题:
Connection:keep-alive
Content-Length:219
Content-Type:text/html; charset=utf-8
Date:Wed, 19 Apr 2017 21:18:51 GMT
Location:http://flux/login
Server:nginx/1.6.2
在配置中设置SERVER_NAME=https://flux.example.com
不起作用。实际上,整个应用程序都不再起作用,我访问的任何页面都有404。
如何修复此重定向问题?
Python 3.6,Flask 0.10.1
答案 0 :(得分:0)
我认为你走在正确的轨道上,但你应该只使用没有协议的主机名:SERVER_NAME=flux.example.com
。