Как передать токен доступа из резервной копии во внешний интерфейс? ⇐ Python
Как передать токен доступа из резервной копии во внешний интерфейс?
Я разрабатываю приложение (FE: Vue.js, BE: flask) и хочу знать, как передать токен доступа из BE в FE.
Это мой файл auth.py (BE), в котором я храню токен доступа для полезных данных.
из фляги импорта Flask, запрос, прерывание, jsonify импортировать JSON из оберток импорта functools из Хосе импорта JWT из urllib.request импортировать urlopen приложение = Колба(__name__) AUTH0_DOMAIN = *** АЛГОРИТМЫ = ['RS256'] API_AUDIENCE = *** класс AuthError (Исключение): def __init__(self, error, status_code): self.error = ошибка self.status_code = status_code защита get_token_auth_header(): """Получает токен доступа из заголовка авторизации. """ auth = request.headers.get('Авторизация', Нет) печать(запрос.заголовки) если нет авторизации: поднять AuthError({ 'код': 'authorization_header_missing', 'description': 'Ожидается заголовок авторизации.' }, 401) части = auth.split() if parts[0].lower() != 'носитель': поднять AuthError({ 'код': 'неверный_заголовок', 'description': 'Заголовок авторизации должен начинаться с «Bearer».' }, 401) элиф лен(части) == 1: поднять AuthError({ 'код': 'неверный_заголовок', 'description': 'Токен не найден.' }, 401) Элиф Лен(части) > 2: поднять AuthError({ 'код': 'неверный_заголовок', 'description': 'Заголовок авторизации должен быть токеном на предъявителя.' }, 401) токен = части[1] токен возврата защита проверки_декодирования_jwt (токен): jsonurl = urlopen(f'https://{AUTH0_DOMAIN}/.well-known/jwks.json') jwks = json.loads(jsonurl.read()) unverified_header = jwt.get_unverified_header (токен) rsa_key = {} если «ребенок» не указан в unverified_header: поднять AuthError({ 'код': 'неверный_заголовок', 'description': 'Авторизация неверная.' }, 401) для ключа в jwks['keys']: if key['kid'] == unverified_header['kid']: rsa_key = { 'кты': ключ['кти'], 'ребенок': ключ['ребенок'], 'использовать': ключ['использовать'], 'n': ключ['n'], 'е': ключ['e'] } если rsa_key: пытаться: полезная нагрузка = jwt.decode( токен, rsa_key, алгоритмы=АЛГОРИТМЫ, аудитория = API_AUDIENCE, эмитент = 'https://' + AUTH0_DOMAIN + '/' ) возврат полезной нагрузки кроме jwt.ExpiredSignatureError: поднять AuthError({ 'код': 'token_expired', 'description': 'Срок действия токена истек.' }, 401) кроме jwt.JWTClaimsError: поднять AuthError({ 'код': 'invalid_claims', 'description': 'Неверные утверждения. Пожалуйста, проверьте аудиторию и эмитента». }, 401) кроме Исключения: поднять AuthError({ 'код': 'неверный_заголовок', 'description': 'Невозможно проанализировать токен аутентификации.' }, 400) поднять AuthError({ 'код': 'неверный_заголовок', 'description': 'Невозможно найти подходящий ключ.' }, 400) Защиту check_permissions (разрешение, полезная нагрузка): если «разрешения» отсутствуют в полезных данных: печать (полезная нагрузка) прервать(400) если разрешение отсутствует в полезных данных['permissions']: печать (разрешение) прервать(403) вернуть истину защита require_auth(permission=''): защита требует_auth_decorator(f): @wraps(ф) def-обертка(*args, **kwargs): токен = get_token_auth_header() пытаться: полезная нагрузка =verify_decode_jwt(токен) кроме: прервать(401) check_permissions (разрешение, полезная нагрузка) return f(payload, *args, **kwargs) возвратная обертка возврат требует_auth_decorator Это мой код FE. в настоящее время я храню статические данные в accessToken, поэтому хочу сделать это динамически. Я не знаю, как получить accessToken от BE..
импортировать аксиомы из «аксиом»; экспортировать по умолчанию { имя: 'Список актеров', реквизит: { сообщение: строка, }, данные() { возвращаться { Список актеров: '', } }, смонтирован() { const accessToken = '***'; axios.get(`http://127.0.0.1:5000/actor-list`,{ заголовки: { 'Авторизация': `Носитель ${accessToken}` } }) .then(ответ => { this.actorList = response.data.actor; }) .catch(ошибка => { console.error("Произошла ошибка!", error); }); } }
Я разрабатываю приложение (FE: Vue.js, BE: flask) и хочу знать, как передать токен доступа из BE в FE.
Это мой файл auth.py (BE), в котором я храню токен доступа для полезных данных.
из фляги импорта Flask, запрос, прерывание, jsonify импортировать JSON из оберток импорта functools из Хосе импорта JWT из urllib.request импортировать urlopen приложение = Колба(__name__) AUTH0_DOMAIN = *** АЛГОРИТМЫ = ['RS256'] API_AUDIENCE = *** класс AuthError (Исключение): def __init__(self, error, status_code): self.error = ошибка self.status_code = status_code защита get_token_auth_header(): """Получает токен доступа из заголовка авторизации. """ auth = request.headers.get('Авторизация', Нет) печать(запрос.заголовки) если нет авторизации: поднять AuthError({ 'код': 'authorization_header_missing', 'description': 'Ожидается заголовок авторизации.' }, 401) части = auth.split() if parts[0].lower() != 'носитель': поднять AuthError({ 'код': 'неверный_заголовок', 'description': 'Заголовок авторизации должен начинаться с «Bearer».' }, 401) элиф лен(части) == 1: поднять AuthError({ 'код': 'неверный_заголовок', 'description': 'Токен не найден.' }, 401) Элиф Лен(части) > 2: поднять AuthError({ 'код': 'неверный_заголовок', 'description': 'Заголовок авторизации должен быть токеном на предъявителя.' }, 401) токен = части[1] токен возврата защита проверки_декодирования_jwt (токен): jsonurl = urlopen(f'https://{AUTH0_DOMAIN}/.well-known/jwks.json') jwks = json.loads(jsonurl.read()) unverified_header = jwt.get_unverified_header (токен) rsa_key = {} если «ребенок» не указан в unverified_header: поднять AuthError({ 'код': 'неверный_заголовок', 'description': 'Авторизация неверная.' }, 401) для ключа в jwks['keys']: if key['kid'] == unverified_header['kid']: rsa_key = { 'кты': ключ['кти'], 'ребенок': ключ['ребенок'], 'использовать': ключ['использовать'], 'n': ключ['n'], 'е': ключ['e'] } если rsa_key: пытаться: полезная нагрузка = jwt.decode( токен, rsa_key, алгоритмы=АЛГОРИТМЫ, аудитория = API_AUDIENCE, эмитент = 'https://' + AUTH0_DOMAIN + '/' ) возврат полезной нагрузки кроме jwt.ExpiredSignatureError: поднять AuthError({ 'код': 'token_expired', 'description': 'Срок действия токена истек.' }, 401) кроме jwt.JWTClaimsError: поднять AuthError({ 'код': 'invalid_claims', 'description': 'Неверные утверждения. Пожалуйста, проверьте аудиторию и эмитента». }, 401) кроме Исключения: поднять AuthError({ 'код': 'неверный_заголовок', 'description': 'Невозможно проанализировать токен аутентификации.' }, 400) поднять AuthError({ 'код': 'неверный_заголовок', 'description': 'Невозможно найти подходящий ключ.' }, 400) Защиту check_permissions (разрешение, полезная нагрузка): если «разрешения» отсутствуют в полезных данных: печать (полезная нагрузка) прервать(400) если разрешение отсутствует в полезных данных['permissions']: печать (разрешение) прервать(403) вернуть истину защита require_auth(permission=''): защита требует_auth_decorator(f): @wraps(ф) def-обертка(*args, **kwargs): токен = get_token_auth_header() пытаться: полезная нагрузка =verify_decode_jwt(токен) кроме: прервать(401) check_permissions (разрешение, полезная нагрузка) return f(payload, *args, **kwargs) возвратная обертка возврат требует_auth_decorator Это мой код FE. в настоящее время я храню статические данные в accessToken, поэтому хочу сделать это динамически. Я не знаю, как получить accessToken от BE..
импортировать аксиомы из «аксиом»; экспортировать по умолчанию { имя: 'Список актеров', реквизит: { сообщение: строка, }, данные() { возвращаться { Список актеров: '', } }, смонтирован() { const accessToken = '***'; axios.get(`http://127.0.0.1:5000/actor-list`,{ заголовки: { 'Авторизация': `Носитель ${accessToken}` } }) .then(ответ => { this.actorList = response.data.actor; }) .catch(ошибка => { console.error("Произошла ошибка!", error); }); } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как передать токен доступа из резервной копии во внешний интерфейс?
Anonymous » » в форуме Javascript - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Восстановление дифференциальной резервной копии вместе с полной резервной копией
Anonymous » » в форуме C# - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Интеграция файла резервной копии ChatStorage.sqlite WhatsApp в телефон Android
Anonymous » » в форуме Android - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как восстановить веб-приложение C# IIS на новом сервере из резервной копии?
Anonymous » » в форуме C# - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-