Back to questions
Junior — Middle
51
Имел ли опыт работы с системами аутентификации для серверных приложений?
Answer from AI
sobes.tech AI
Да, имел опыт работы с системами аутентификации для серверных приложений на Python. Обычно использовал JWT (JSON Web Tokens) для аутентификации пользователей в REST API. Пример простейшей аутентификации с использованием Flask и PyJWT:
from flask import Flask, request, jsonify
import jwt
import datetime
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
users = {'user1': 'password1'}
@app.route('/login', methods=['POST'])
def login():
auth = request.json
username = auth.get('username')
password = auth.get('password')
if username in users and users[username] == password:
token = jwt.encode({'user': username, 'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=1)}, app.config['SECRET_KEY'])
return jsonify({'token': token})
return jsonify({'message': 'Invalid credentials'}), 401
@app.route('/protected')
def protected():
token = request.headers.get('Authorization')
if not token:
return jsonify({'message': 'Token is missing'}), 401
try:
data = jwt.decode(token, app.config['SECRET_KEY'], algorithms=['HS256'])
return jsonify({'message': f'Welcome {data["user"]}'})
except jwt.ExpiredSignatureError:
return jsonify({'message': 'Token expired'}), 401
except jwt.InvalidTokenError:
return jsonify({'message': 'Invalid token'}), 401
if __name__ == '__main__':
app.run()
Также знаком с использованием OAuth2 и библиотекой django-rest-framework для аутентификации в Django-проектах.