from flask import Flask
import ssl
app = Flask(__name__)
@app.route('/')
def home():
return "欢迎使用在线实习管理平台!"
if __name__ == '__main__':
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
context.load_cert_chain('server.crt', 'server.key')
app.run(host='0.0.0.0', port=443, ssl_context=context)
from flask import Flask, request, jsonify
import jwt
import datetime
import re
app = Flask(__name__)
SECRET_KEY = 'your_secret_key'
# 模拟数据库
users = {
'user1': {'password': 'pass123', 'phone': '13812345678'}
}
def generate_token(user):
payload = {
'user': user,
'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1)
}
return jwt.encode(payload, SECRET_KEY, algorithm='HS256')
@app.route('/login', methods=['POST'])
def login():
data = request.json
username = data.get('username')
password = data.get('password')
phone = data.get('phone')
if not all([username, password, phone]):
return jsonify({'error': '缺少必要参数'}), 400
if username not in users or users[username]['password'] != password:
return jsonify({'error': '用户名或密码错误'}), 401
if not re.match(r'^1[3-9]\d{9}$', phone):
return jsonify({'error': '手机号格式不正确'}), 400
token = generate_token(username)
return jsonify({'token': token}), 200
if __name__ == '__main__':
app.run(debug=True)

from flask import Flask, request, jsonify
import jwt
app = Flask(__name__)
SECRET_KEY = 'your_secret_key'
# 模拟数据库
users = {
'user1': {'role': 'intern'},
'admin': {'role': 'admin'}
}
def get_user_from_token(token):
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
return payload['user']
except jwt.ExpiredSignatureError:
return None
except jwt.InvalidTokenError:
return None
def require_role(role):
def decorator(f):
def wrapper(*args, **kwargs):
token = request.headers.get('Authorization')
if not token:
return jsonify({'error': '缺少授权令牌'}), 401
user = get_user_from_token(token)
if not user or users.get(user, {}).get('role') != role:
return jsonify({'error': '无权访问'}), 403
return f(*args, **kwargs)
return wrapper
return decorator
@app.route('/api/intern/data')
@require_role('intern')
def intern_data():
return jsonify({'data': '这是实习生的数据'}), 200
@app.route('/api/admin/data')
@require_role('admin')
def admin_data():
return jsonify({'data': '这是管理员的数据'}), 200
if __name__ == '__main__':
app.run(debug=True)
