简而言之:
只使用 Flask 微框架(和其依赖项),我们可以从一个路由内部重定向到另一个路由?
例如:
- 用户提交注册表单(包括
username
和password
)到@app.route('/register', methods=['POST'])
- 如果注册成功,Flask 自动执行 HTTP POST 请求到
@app.route('/login', methods['POST'])
并传递username
和password
- 处理并登录用户
细节:
我正在使用Flask 框架和Flask-JWT扩展来构建 REST API。更具体地说,我正在实现登录和注册功能。
登录功能完美运行,并返回一个 JSON 对象令牌。
以下是我的(登录)身份验证处理程序(即/auth
(POST 请求) - 默认的 Flask-JWT 身份验证URL规则):
@jwt.authentication_handler
def authenticate(username, password):
user = User.query.filter_by(username=username).first()
if user and user.verify_password(password):
return user
return None
成功的登录将返回:
{
"token": "<jwt-token>"
}
以下是我的注册流程:
@app.route('/register', methods=['PUT'])
def register():
username = request.form.get('username')
password = request.form.get('password')
if username is None or password is None:
abort(400) # missing parameters
user = User.query.filter_by(username=username).first()
if user:
abort(400) # user exists
else:
user = User(user=user)
user.hash_password(password)
db.session.add(user)
db.session.commit()
# How do we generate a token?
# Perform an internal redirect to the login route?
return jsonify({'token': <jwt-token>}), 201