教材发放系统中登录功能的实现与公司应用
小明:最近我们公司要开发一个教材发放系统,你觉得登录功能应该怎么设计?
小李:登录功能是系统的入口,必须确保安全性。我们可以使用JWT进行身份验证。
小明:JWT是什么?怎么用?
小李:JWT是一种基于JSON的令牌,可以存储用户信息,服务器生成后返回给客户端,后续请求带上这个令牌即可。
小明:那具体怎么实现呢?有没有代码示例?
小李:我给你写个简单的Python Flask示例吧。
from flask import Flask, request, jsonify
import jwt
import datetime
app = Flask(__name__)
SECRET_KEY = 'your-secret-key'
@app.route('/login', methods=['POST'])
def login():
username = request.json.get('username')
password = request.json.get('password')
# 假设这里做用户验证
if username == 'admin' and password == '123456':
payload = {
'username': username,
'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1)
}
token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
return jsonify({'token': token})
else:
return jsonify({'error': 'Invalid credentials'}), 401
@app.route('/protected', methods=['GET'])
def protected():
token = request.headers.get('Authorization')
if not token:
return jsonify({'error': 'Missing token'}), 401
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
return jsonify({'message': f'Welcome {payload["username"]}!'})
except jwt.ExpiredSignatureError:
return jsonify({'error': 'Token expired'}), 401
except jwt.InvalidTokenError:
return jsonify({'error': 'Invalid token'}), 401
if __name__ == '__main__':
app.run(debug=True)
小明:明白了,这样就能保证登录的安全性了。
小李:没错,而且公司内部系统也需要考虑权限管理,可以扩展角色字段来区分不同用户类型。
小明:好的,这对我很有帮助!
本站知识库部分内容及素材来源于互联网,如有侵权,联系必删!