小明:嘿,小李,我最近在济南的一个学校做排课表软件的开发,遇到了一个问题,就是用户登录怎么实现?
小李:哦,这个简单。你可以用Python的Flask框架来搭建后端,然后用JWT来做身份验证。
小明:JWT?那是什么?我之前没接触过。
小李:JWT是JSON Web Token的缩写,它是一种轻量级的认证机制,可以用来在客户端和服务器之间安全地传输信息。
小明:明白了。那具体怎么实现呢?
小李:首先,用户输入用户名和密码,发送到服务器。服务器验证成功后,生成一个JWT令牌,并返回给客户端。
小明:那客户端怎么保存这个令牌呢?
小李:可以用localStorage或者sessionStorage来存储,之后每次请求都需要带上这个令牌。
小明:那如果用户没有登录,访问其他页面怎么办?
小李:可以在前端用路由守卫检查是否有有效的token,如果没有,就跳转到登录页。
小明:听起来不错。那有没有具体的代码示例?
小李:当然有。比如用Flask生成JWT:
from flask import Flask, request, jsonify
from flask_jwt_extended import (
JWTManager, create_access_token,
jwt_required, get_jwt_identity
)
app = Flask(__name__)
app.config['JWT_SECRET_KEY'] = 'super-secret-key'
jwt = JWTManager(app)
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username')
password = request.json.get('password')
if username == 'admin' and password == '123456':
access_token = create_access_token(identity=username)
return jsonify(access_token=access_token), 200
else:
return jsonify(message="Invalid credentials"), 401
@app.route('/protected', methods=['GET'])
@jwt_required()
def protected():
current_user = get_jwt_identity()
return jsonify(logged_in_as=current_user), 200
if __name__ == '__main__':
app.run(debug=True)

小明:太好了,这对我帮助很大!谢谢!

小李:不客气,记得在济南的项目中,还要考虑本地化和性能优化问题。
小明:嗯,我会注意的。
本站部分内容及素材来源于互联网,如有侵权,联系必删!
客服经理