Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Создание web-сервиса. Всё, но не сразу. Авторизация в клиентской части.

Сегодня мы рассмотрим авторизацию на клиенте. Да начнём с авторизации, а не с регистрации. Так как я уже зарегистрирован как супер пользователь).

Для начала установим CORS на Django. CORS — необходим для получения данных с ресурсов, находящихся на другом домене, так называемый кроссдомен.

Для установки нам потребуется активировать виртуальное окружение. В консоли открываете папку с вашим виртуальным окружением и активируете его командой:

source bin/activate

Далее устанавливаем cors для Django.

pip3 install django-cors-headers

Переходим в файл setting.py вашего проекта.

В словарь INSTALLED_APPS добавляете приложение:

INSTALLED_APPS = (
    ...
    'corsheaders',
    ...
)

Спускаемся ниже и добавляем в MIDDLEWARE:

MIDDLEWARE = [ 
    ...
    'corsheaders.middleware.CorsMiddleware',
    ...
]

Middleware - это промежуточный слой, через него проходят запросы и ответы.
Далее укажем настройки для cors.

Разрешаем куки для межсайтовых запросов:

CORS_ALLOW_CREDENTIALS = True

Список разрешённых ресурсов:

CORS_ORIGIN_WHITELIST = (
    'http://127.0.0.1:3000'
)

Разрешённые методы и заголовки. Для этого импортируем библиотеку corsheaders:

from corsheaders.defaults import *

CORS_ALLOW_METHODS = default_methods
CORS_ALLOW_HEADERS = default_headers

На этом установка и настройка CORS закончена.

Переходим к самой авторизации

Для этого нам необходимо будет запустить бекенд

python3 manage.py runserver

Перед тем как запустить nuxt создайте в папке page файл login.vue — страница нашей авторизации, и запускайте фронтенд:

npm run dev

Код очень громоздкий, полный листинг в конце статьи.

В теге template мы описываем, то что увидим — вёрстку. Вёрстку формы я взял с https://bootstrap-vue.js.org/ и переделал её под свои задачи. Форма — группа формы (label и input). На форму повешен обработчик @submit="onSubmit".
Это означает, что при нажатии на кнопку типа submit сработает функция onSubmit, которую опишем ниже.

После template и идёт script, так называемый обработчик.

Первым делом в нём импортируем axios, о котором говорили в прошлом уроке:

import axios from 'axios'

и прописываем export default.

Далее опишем метод data. Метод data необходим, потому что он подгружается перед загрузкой страницы.

В нём опишем переменные данных полей формы, потом из них мы получим логин и пароль.

В методе mounted мы сохраним в нашем браузере токен и логин.

Объект methods содержит в себе необходимые нам функции, а точнее функцию onSumbit.

Первым делом мы запрещаем дефолтное действие кнопки. И формируем запрос к нашему API с помощью axios.

Отправляем username и password серверу, если он отвечает, то проверяем вернул ли он нам token, если да, то сохраняем в локальное хранилище браузер токен и логин юзера.

Вот так просто мы получили токен для юзера.

Почему мы не использовали Vuex? Потому что он хранит данные до полного обновления страницы. В свою очередь localStorage хранит данные в браузере по подобию кук.

Листинг login.vue

Заглавное изображение с сайта Ответ Mail.ru

Данный пост подготовлен автором @zheev. В рамках данного цикла статей он расскажет о том, что и как он программировал, какие языки и технологии использовал. С какими трудностями пришлось столкнуться и их решение на реальных примерах.

Первая часть - Вступление
Вторая часть - Проектирование БД
Третья часть - Установка окружения
Четвёртая часть - Установка и настройка Django
Пятая часть - Установка и сборка Vue
Шестая часть - Создание таблиц средствами Django
Седьмая часть - Создание REST приложений на Django
Восьмая часть - Использование фреймворка Nuxt в приложении на Vue
Девятая часть - Делаем авторизацию в Django

22
191.758 GOLOS
На Golos с August 2017
Комментарии (1)
Сортировать по:
Сначала старые