# настройки
app = Flask(__name__)
app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
app.config['PERMANENT_SESSION_LIFETIME'] = 3600
CORS(app, resources={r'/*': {'origins': '*'}}, supports_credentials=True)
def login_user(email, pas):
try:
pg = psycopg2.connect("""
host=localhost
dbname=postgres
user=postgres
password=***
port=5432
""")
cursor = pg.cursor(cursor_factory=psycopg2.extras.DictCursor)
cursor.execute(f"SELECT COUNT(*) FROM users WHERE email=$${email}$$")
if cursor.fetchone()[0] == 1:
print(1)
cursor.execute(f"SELECT * FROM users WHERE email=$${email}$$")
user = cursor.fetchone()
if user[3] == pas:
session['id'] = user[0]
session.modified = True
return_data = f"Вход выполнен! Здравствуйте, {session['id']}"
else: return_data = "Неверный пароль!"
else: return_data = "Аккаунта с такой почтой не существует!"
except (Exception, Error) as error:
print(f'DB ERROR: ', error)
return_data = f"Ошибка обращения к базе данных: {error}"
finally:
if pg:
cursor.close
pg.close
print("Соединение с PostgreSQL закрыто")
return return_data
@app.route('/login', methods=['GET', 'POST'])
def login():
response_object = {'status': 'success'}
if request.method == 'POST':
post_data = request.get_json()
print(login_user(post_data.get('user'), post_data.get('password')))
return jsonify(response_object)
else:
response_object['message'] = db_get()
return jsonify(response_object)
# another decorator
@app.route('/user-info', methods=['GET', 'PUT'])
def user_info():
response_object = {'status': 'success'}
if request.method == 'PUT':
print(session.get('id')) # None
Запррос, елси надо
async LogIn(){
let response = await fetch(
'http://127.0.0.1:5000/login',{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(this.form),
credentials: "include"
}).then((data) => {
if (data.ok){
return data.json()
} else{
console.error('HTTP status: '+ data.status)
}
console.log(data)
})
}
информация в сессии не сохраняется, так же как и куки файлы на сервере, на фронтеде сохраняется