Last major update: 25.08.2020
- Что такое авторизация/аутентификация
- Где хранить токены
- Как ставить куки ?
- Процесс логина
- Процесс рефреш токенов
- Кража токенов/Механизм контроля токенов
function rus_to_latin ( str ) { | |
var ru = { | |
'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', | |
'е': 'e', 'ё': 'e', 'ж': 'j', 'з': 'z', 'и': 'i', | |
'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o', | |
'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', | |
'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', | |
'щ': 'shch', 'ы': 'y', 'э': 'e', 'ю': 'u', 'я': 'ya' | |
}, n_str = []; |
В данной заметке рассматривается работа JWT с симметичным алгоритмом шифрования (HS256/HS384/HS512)
Аутентификация(authentication, от греч. αὐθεντικός [authentikos] – реальный, подлинный; от αὐθέντης [authentes] – автор) - это процесс проверки учётных данных пользователя (логин/пароль). Проверка подлинности пользователя путём сравнения введённого им логина/пароля с данными сохранёнными в базе данных.
Авторизация(authorization — разрешение, уполномочивание) - это проверка прав пользователя на доступ к определенным ресурсам.
function getLocation() { | |
return new Promise((resolve, reject) => { | |
navigator.geolocation.getCurrentPosition( | |
position => { | |
return resolve({ | |
latitude: position.coords.latitude, | |
longitude: position.coords.longitude | |
}) | |
}, | |
error => { |
https://effector.now.sh/en/api/effector/restore
Используется тогда, когда необходимо из ивента напрямую выставить значение в стор в обход .on
.
Аналог без restore
:
const $store = createStore('');
const event = createEvent();
$store.on(event, (_, payload) => payload);
import { useEffect, useRef, useCallback } from 'react'; | |
import { createEvent, createStore } from 'effector'; | |
import { useStore } from 'effector-react'; | |
const open = createEvent('open'); | |
const closed = createEvent('closed'); | |
const error = createEvent('error'); | |
const wsStatus = createStore('closed') |
import {useLocalize, addTranslate} from './useLocalize' | |
addTranslate({ | |
lang: 'ru', | |
translates: { | |
greeting: 'Добро пожаловать, снова' | |
} | |
}); | |
export function App() { |
По мотивам вопросов чатика react.js@telegram
Оффтоп: пожалуйста, не нужно в сотый раз объяснять уже набившую оскомину тему новичку, который задаст подобный вопрос. Просто поделитесь ссылкой на этот текст. С уважением, Андрей @XaveScor Звёздочка
Краткий ответ на этот вопрос, если вы не хотите разбираться детальнее:
type Singleton = string; | |
type Union = string | number; | |
type DistributedKeyOf<T> = | |
T extends any | |
? keyof T | |
: never; | |
type DistributedValueOf<T> = T[DistributedKeyOf<T>]; |
// eslint-disable-next-line no-magic-numbers | |
const TOKEN_UPDATE_TIME_MS = 5 * 60 * 1e3; | |
const abortTimerToRefreshToken = createEvent(); | |
const timerToRefreshToken = createEffect(); | |
const $canRequestToken = combine( | |
refreshToken.pending, |