hea*_*low 2 python api flask flask-login
我正在使用 Flask 开发一个网站,它由两部分组成,一个面向用户的 GUI 和一些 API。
目前,面向用户的部分使用标准流程来验证用户身份,并且 API 应该使用建议的方式通过 API 来验证用户身份。
这两种方法看起来都很容易使用,但我不太确定如何在我的应用程序中一起使用它们来区分这两个用例。
任何想法?
我可以考虑任何不同的方法吗?
您可以使用两个不同的加载程序。
user_loader当有 cookie 时,Flask-Login 调用一个用 修饰的函数。如果没有提供 cookie,则request_loader调用用 修饰的函数 [ 1 ]。
快速示例:
from flask import Flask, session
from flask_login import LoginManager, current_user
lm = LoginManager()
users_by_id = {1: User(id=1, username='FirstUser')}
users_by_key = {'xxxyyyzzz': User(id=2, username='SecondUser')}
@lm.user_loader
def load_user(user_
anon = User(id=0, username='Anonymous')
return users_by_id.get(int(user_id), anon)
@lm.request_loader
def load_user(request):
anon = User(id=0, username='Anonymous')
header = request.headers.get('Auth', None)
if not header:
return anon
return users_by_key.get(header, anon)
def create_app():
app = Flask(__name__)
lm.init_app(app)
@app.route('/')
def index():
return 'Hello, {}'.format(current_user)
@app.route('/login/')
def login():
session['user_id'] = 1
return 'Logged in'
return app
app = create_app()
app.config['SECRET_KEY'] = 'secret-key'
app.run()
Run Code Online (Sandbox Code Playgroud)
现在您可以使用浏览器访问http://127.0.0.1:5000/login/并“登录”,然后索引页面将正确地将您定位为 FirstUser。
然后,您可以发送请求并通过标头进行身份验证,如下所示:
>>> import requests
>>> r = requests.get('http://127.0.0.1:5000/', headers={'Auth': 'xxxyyyzzz'})
>>> r.text
"Hello, User('SecondUser')"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |