【发布时间】:2015-12-07 05:41:27
【问题描述】:
我正在尝试允许用户使用他们的帐户从单独的 Web 服务登录到我的 Flask 应用程序。我可以联系此 Web 服务的 api 并接收安全令牌。如何使用此令牌对用户进行身份验证,以便他们可以访问受限视图?
我不需要将用户保存到我自己的数据库中。我只想对它们进行身份验证以进行会话。我相信这可以使用 Flask-Security 和 @auth_token_required 装饰器来完成,但文档不是很详细,我不确定如何实现。
编辑:
这是一个代码示例:
@main.route("/login", methods=["GET", "POST"])
def login():
payload = {"User": "john", "Password": "password123"}
url = "http://webserviceexample/api/login"
headers = {'content-type': 'application/json'})
#login to web service
r = requests.post(url, headers=headers, json=payload)
response = r.json()
if (r.status_code is 200):
token = response['user']['authentication_token']
# allow user into protected view
return render_template("login.html", form=form)
@main.route('/protected')
@auth_token_required
def protected():
return render_template('protected.html')
【问题讨论】:
-
你需要用token存储用户;并针对服务确认令牌的有效性。否则,您每次启动时都必须针对第 3 方服务对访问者进行身份验证。
-
每次是指每个会话?如果是这样,那很好,他们必须再次进行身份验证。这会是一个问题吗?
标签: python authentication flask flask-security http-token-authentication