Sobes.tech
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-проектах.