Продолжим говорить про аутентификацию. На очереди JWT.
JWT (JSON Web Token) - это стандарт для передачи информации между двумя сторонами в виде JSON объекта. JWT токены состоят из трех частей: заголовка (header), полезной нагрузки (payload) и подписи (signature).
1. Заголовок (header) содержит информацию о типе токена и используемом алгоритме шифрования.
2. Полезная нагрузка (payload) содержит данные, которые нужно передать между сторонами, например, идентификатор пользователя или другую информацию.
3. Подпись (signature) создается с использованием секретного ключа и позволяет проверить целостность токена.
JWT токены часто используются для аутентификации и авторизации пользователей в веб-приложениях. После успешной аутентификации пользователю выдается JWT токен, который он может передавать при каждом запросе на сервер для подтверждения своей личности. Сервер может проверить подпись токена и декодировать полезную нагрузку, чтобы получить доступ к информации о пользователе.
JWT (JSON Web Token) - это стандарт для передачи информации между двумя сторонами в виде JSON объекта. JWT токены состоят из трех частей: заголовка (header), полезной нагрузки (payload) и подписи (signature).
1. Заголовок (header) содержит информацию о типе токена и используемом алгоритме шифрования.
2. Полезная нагрузка (payload) содержит данные, которые нужно передать между сторонами, например, идентификатор пользователя или другую информацию.
3. Подпись (signature) создается с использованием секретного ключа и позволяет проверить целостность токена.
JWT токены часто используются для аутентификации и авторизации пользователей в веб-приложениях. После успешной аутентификации пользователю выдается JWT токен, который он может передавать при каждом запросе на сервер для подтверждения своей личности. Сервер может проверить подпись токена и декодировать полезную нагрузку, чтобы получить доступ к информации о пользователе.
❤3
Расставьте правильно последовательность JWT авторизации. Ответ пишите в комментариях.
1. Веб-приложение проверяет JWT-токен и если он верный, то выполняет действие от имени авторизованного пользователя.
2. Веб-приложение проверяет логин и пароль, и если они верны, то генерирует JWT-токен и отправляет его веб-браузеру.
3. Веб-браузер сохраняет JWT-токен и отправляет его вместе с каждым запросом в веб-приложение.
4. При генерации JWT-токена веб-приложение ставит подпись секретным ключом, который хранится только в веб-приложении.
5. Веб-браузер отправляет запрос веб-приложению с логином и паролем.
1. Веб-приложение проверяет JWT-токен и если он верный, то выполняет действие от имени авторизованного пользователя.
2. Веб-приложение проверяет логин и пароль, и если они верны, то генерирует JWT-токен и отправляет его веб-браузеру.
3. Веб-браузер сохраняет JWT-токен и отправляет его вместе с каждым запросом в веб-приложение.
4. При генерации JWT-токена веб-приложение ставит подпись секретным ключом, который хранится только в веб-приложении.
5. Веб-браузер отправляет запрос веб-приложению с логином и паролем.
❤4
Правильный ответ:
5 (2 4) 3 1.
2 и 4 происходят за один процесс.
2 и 4 происходят за один процесс.
👌3💩1🤡1
Структура авторизации JWT:
1. Пользователь вводит свои учетные данные (например, логин и пароль) на клиентской стороне.
2. Клиент отправляет запрос на сервер с учетными данными для аутентификации.
3. Сервер проверяет учетные данные и, если они верные, создает JWT (JSON Web Token) с уникальным идентификатором пользователя и другой информацией.
4. Сервер отправляет JWT обратно клиенту.
5. Клиент сохраняет JWT (обычно в localStorage или в памяти) для последующих запросов.
6. При каждом запросе к защищенным ресурсам, клиент отправляет JWT в заголовке Authorization.
7. Сервер проверяет подлинность JWT и, если токен действителен, разрешает доступ к защищенным ресурсам.
8. При истечении срока действия JWT, клиент должен повторно авторизоваться для получения нового токена.
1. Пользователь вводит свои учетные данные (например, логин и пароль) на клиентской стороне.
2. Клиент отправляет запрос на сервер с учетными данными для аутентификации.
3. Сервер проверяет учетные данные и, если они верные, создает JWT (JSON Web Token) с уникальным идентификатором пользователя и другой информацией.
4. Сервер отправляет JWT обратно клиенту.
5. Клиент сохраняет JWT (обычно в localStorage или в памяти) для последующих запросов.
6. При каждом запросе к защищенным ресурсам, клиент отправляет JWT в заголовке Authorization.
7. Сервер проверяет подлинность JWT и, если токен действителен, разрешает доступ к защищенным ресурсам.
8. При истечении срока действия JWT, клиент должен повторно авторизоваться для получения нового токена.
❤🔥3
OAuth 2.0 - это протокол авторизации, который позволяет пользователям предоставлять доступ к своим данным на сторонних сайтах без необходимости передачи своих учетных данных (логин и пароль). Вместо этого, пользователь авторизует приложение на стороннем сайте через OAuth 2.0, чтобы приложение могло получить доступ к данным пользователя.
Процесс работы OAuth 2.0 выглядит примерно так: пользователь переходит на сторонний сайт, где требуется авторизация через OAuth 2.0. Пользователь вводит свои учетные данные на сайте, а затем сайт предоставляет ему токен доступа. Этот токен передается приложению, которое хочет получить доступ к данным пользователя. Приложение использует токен для запроса доступа к данным пользователя на стороннем сайте.
Примером такой авторизации может служить авторизация через Google или ВК.
Процесс работы OAuth 2.0 выглядит примерно так: пользователь переходит на сторонний сайт, где требуется авторизация через OAuth 2.0. Пользователь вводит свои учетные данные на сайте, а затем сайт предоставляет ему токен доступа. Этот токен передается приложению, которое хочет получить доступ к данным пользователя. Приложение использует токен для запроса доступа к данным пользователя на стороннем сайте.
Примером такой авторизации может служить авторизация через Google или ВК.
🔥5👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Когда не совсем понял что такое наследование☝️
Всем привет.
На этой и следующей неделе тренируем SQL.
Всем привет.
На этой и следующей неделе тренируем SQL.
🤣4🔥2
Всем привет.
Повторяем теорию по SQL или сразу задачки?)
Повторяем теорию по SQL или сразу задачки?)
Anonymous Poll
80%
Сначала теория
20%
Сразу задачи
🔥5
Для начала давайте вспомним основные команды SQL для работы с данными.
1. SELECT - используется для выбора данных из базы данных.
Например:
SELECT * FROM table_name;
- выберет все данные из таблицы.
2. INSERT INTO - используется для добавления новых строк в таблицу.
Например:
INSERT INTO table_name (column1, column2) VALUES (value1, value2);
- добавит новую строку в таблицу с указанными значениями.
3. UPDATE - используется для обновления существующих записей в таблице.
Например:
UPDATE table_name SET column1 = value1 WHERE condition;
- обновит значение column1 в таблице, удовлетворяющем условию.
4. DELETE - используется для удаления записей из таблицы. Например:
DELETE FROM table_name WHERE condition;
- удалит записи из таблицы, удовлетворяющие условию.
5. WHERE - используется для фильтрации результатов по заданному условию.
Например:
SELECT * FROM table_name WHERE column1 = value;
- выберет только те строки, где column1 равен заданному значению.
6. JOIN - используется для объединения данных из двух и более таблиц на основе связанных столбцов.
Например:
SELECT * FROM table1 JOIN table2 ON table1.column = table2.column;
- объединит данные из двух таблиц на основе совпадения значений в столбцах.
7. GROUP BY - используется для группировки результатов по определенному столбцу.
Например:
SELECT column1, COUNT(*) FROM table_name GROUP BY column1;
- сгруппирует данные по значениям в столбце column1 и посчитает количество строк в каждой группе.
8. ORDER BY - используется для сортировки результатов по заданному столбцу.
Например:
SELECT * FROM table_name ORDER BY column1 DESC;
- отсортирует данные по столбцу column1 в порядке убывания.
1. SELECT - используется для выбора данных из базы данных.
Например:
SELECT * FROM table_name;
- выберет все данные из таблицы.
2. INSERT INTO - используется для добавления новых строк в таблицу.
Например:
INSERT INTO table_name (column1, column2) VALUES (value1, value2);
- добавит новую строку в таблицу с указанными значениями.
3. UPDATE - используется для обновления существующих записей в таблице.
Например:
UPDATE table_name SET column1 = value1 WHERE condition;
- обновит значение column1 в таблице, удовлетворяющем условию.
4. DELETE - используется для удаления записей из таблицы. Например:
DELETE FROM table_name WHERE condition;
- удалит записи из таблицы, удовлетворяющие условию.
5. WHERE - используется для фильтрации результатов по заданному условию.
Например:
SELECT * FROM table_name WHERE column1 = value;
- выберет только те строки, где column1 равен заданному значению.
6. JOIN - используется для объединения данных из двух и более таблиц на основе связанных столбцов.
Например:
SELECT * FROM table1 JOIN table2 ON table1.column = table2.column;
- объединит данные из двух таблиц на основе совпадения значений в столбцах.
7. GROUP BY - используется для группировки результатов по определенному столбцу.
Например:
SELECT column1, COUNT(*) FROM table_name GROUP BY column1;
- сгруппирует данные по значениям в столбце column1 и посчитает количество строк в каждой группе.
8. ORDER BY - используется для сортировки результатов по заданному столбцу.
Например:
SELECT * FROM table_name ORDER BY column1 DESC;
- отсортирует данные по столбцу column1 в порядке убывания.
🔥3❤1👍1
Начнем с простых задачек по SQL:
У вас есть таблица "Продукты" с полями "Название", "Цена" и "Количество".
Необходимо написать SQL запрос, который выведет названия продуктов, у которых цена выше средней цены по всем продуктам в таблице.
Свой вариант пишите в комментариях.
У вас есть таблица "Продукты" с полями "Название", "Цена" и "Количество".
Необходимо написать SQL запрос, который выведет названия продуктов, у которых цена выше средней цены по всем продуктам в таблице.
Свой вариант пишите в комментариях.
Отлично. Решение задачек уже есть. Завтра накидаю новые)))
👍2
А вы используете тип UUID?
1. Уникальные идентификаторы:
2. Распределенные системы: При работе с распределенными системами, где несколько узлов должны создавать уникальные идентификаторы,
3. Анонимность:
4. Связывание данных: В некоторых случаях
В целом,
UUID
(Universally Unique Identifier) - это тип данных, который используется для хранения уникальных идентификаторов в базах данных. UUID
представляет собой 128-битное значение, которое гарантированно уникально в пределах всей системы.UUID
может быть применен в различных случаях:1. Уникальные идентификаторы:
UUID
часто используется для создания уникальных идентификаторов для строк в таблицах баз данных. Это особенно полезно, когда необходимо генерировать уникальные идентификаторы без необходимости обращения к централизованному источнику уникальности.2. Распределенные системы: При работе с распределенными системами, где несколько узлов должны создавать уникальные идентификаторы,
UUID
может быть использован для генерации уникальных значений без конфликтов.3. Анонимность:
UUID
может быть использован для создания уникальных идентификаторов, не раскрывающих никакой конфиденциальной информации о пользователе или объекте.4. Связывание данных: В некоторых случаях
UUID
может быть использован для связывания данных между различными таблицами или системами без необходимости использования первичных ключей.В целом,
UUID
является удобным способом создания уникальных идентификаторов без необходимости централизованной координации. Однако, следует учитывать, что использование UUID
может замедлить процессы индексации и поиска данных в базе данных из-за их уникальности и размера.❤🔥4👍3
Указатель:
1. Указатель - это переменная, которая содержит адрес другой переменной.
2. Он может быть изменен для указания на другую переменную.
3. Указатели могут быть нулевыми или неопределенными (указывать в никуда).
4. Для доступа к значению, на которое указывает указатель, необходимо использовать оператор разыменования (*).
Ссылка:
1. Ссылка - это псевдоним для переменной, то есть другое имя для существующей переменной.
2. Она не может быть переинициализирована для ссылки на другую переменную.
3. Ссылка всегда указывает на существующую переменную и не может быть нулевой.
4. Для объявления ссылки используется оператор &.
1. Указатель - это переменная, которая содержит адрес другой переменной.
2. Он может быть изменен для указания на другую переменную.
3. Указатели могут быть нулевыми или неопределенными (указывать в никуда).
4. Для доступа к значению, на которое указывает указатель, необходимо использовать оператор разыменования (*).
Ссылка:
1. Ссылка - это псевдоним для переменной, то есть другое имя для существующей переменной.
2. Она не может быть переинициализирована для ссылки на другую переменную.
3. Ссылка всегда указывает на существующую переменную и не может быть нулевой.
4. Для объявления ссылки используется оператор &.
#include <iostream>
using namespace std;
int main() {
int variable = 5; // создание переменной
int &ref = variable; // создание ссылки на переменную
int *ptr = &variable; // создание указателя на переменную
cout << "Адрес переменной: " << &variable << endl;
cout << "Адрес ссылки: " << &ref << endl;
cout << "Значение указателя: " << ptr << endl;
cout << "Исходное значение переменной: " << variable << endl;
ref = 8; // изменение значения переменной через ссылку
cout << "Значение переменной после изменения через ссылку: " << variable << endl;
*ptr = 10; // изменение значения переменной через указатель
cout << "Значение переменной после изменения через указатель: " << variable << endl;
return 0;
}
👍9🔥1