一个路由的 Flask 身份验证覆盖
Flask Authentication Override for one Route
我是 python 的新手,正在为 Flask Web 服务器编写一个小代码。
我需要一个解决方案来实现以下场景。
我有 app.py 调用 settings.py 获取 flask 用户 ID 和密码,还有一个 route.py 来处理路由。
现在我希望仅要求用户对少数路由进行身份验证,而其他路由应覆盖身份验证并根据特定 users/specific 主机执行操作。
这能实现吗?
截至目前,它要求对所有路由进行身份验证
你可以写一个装饰器。装饰器通常在您要使用的函数定义之前被调用(在这种情况下,每当您想要验证您的路由时)。
例如:
def requires_auth():
def wrapper(f):
@wraps(f)
def decorated(*args, **kwargs):
if 'id' not in flask.session:
return unauthorized_abort()
else:
if flask.session['first_login']:
return f(*args, **kwargs)
else:
return flask.render_template('change_password.html')
return decorated
return wrapper
写完这个装饰器后,我们可以轻松地只对特定路由使用身份验证。下面的代码显示 @require_auth() 这将很容易地帮助特定路线。
@app.route('/data/get_data',methods=['GET'])
@requires_auth()
def get_data():
虽然上面的答案解决了我的疑问,但我一直在寻找更具体的场景。
这是我更改的内容,
我在烧瓶设置中评论了#app.config['BASIC_AUTH_FORCE'] = True
这是 routes.py 中发生的变化
添加
basic_auth = BasicAuth(应用程序)
我添加了这个装饰器
@basic_auth.required 需要认证的路由。
作为一项安全措施,我只允许来自使用 headers 的特定主机的未经身份验证的请求。
我是 python 的新手,正在为 Flask Web 服务器编写一个小代码。 我需要一个解决方案来实现以下场景。
我有 app.py 调用 settings.py 获取 flask 用户 ID 和密码,还有一个 route.py 来处理路由。 现在我希望仅要求用户对少数路由进行身份验证,而其他路由应覆盖身份验证并根据特定 users/specific 主机执行操作。 这能实现吗?
截至目前,它要求对所有路由进行身份验证
你可以写一个装饰器。装饰器通常在您要使用的函数定义之前被调用(在这种情况下,每当您想要验证您的路由时)。
例如:
def requires_auth():
def wrapper(f):
@wraps(f)
def decorated(*args, **kwargs):
if 'id' not in flask.session:
return unauthorized_abort()
else:
if flask.session['first_login']:
return f(*args, **kwargs)
else:
return flask.render_template('change_password.html')
return decorated
return wrapper
写完这个装饰器后,我们可以轻松地只对特定路由使用身份验证。下面的代码显示 @require_auth() 这将很容易地帮助特定路线。
@app.route('/data/get_data',methods=['GET'])
@requires_auth()
def get_data():
虽然上面的答案解决了我的疑问,但我一直在寻找更具体的场景。 这是我更改的内容,
我在烧瓶设置中评论了#app.config['BASIC_AUTH_FORCE'] = True
这是 routes.py 中发生的变化 添加 basic_auth = BasicAuth(应用程序) 我添加了这个装饰器 @basic_auth.required 需要认证的路由。
作为一项安全措施,我只允许来自使用 headers 的特定主机的未经身份验证的请求。