Задать вопрос

Авторизация Django + Vue на ESIA, с чего начать?

необходимо прикрутить к Django - Vue.
Это пол беды и с этим я вроде как справился, проблема в другом - авторизация.
Авторизация происходит в ESIA (Госуслуги)
Авторизация уже настроена, и полноценно работает на DJango, т.е я могу зайти и выйти там.

Теперь вопрос, как это реализовать на Vue?
Я в принципе не работал в этом направлении, но начальство требует...
Не совсем просто даже понимаю от чего отталкиваться.
Пробовал через Cookie данные передавать (Пользователь авторизируется через шаблон Django, далее его редиректит в приложение Vue с данными, но думаю такой подход не самый правильный и там есть свои нюансы почему я не оставил этот момент)

Мне бы хоть наводку с чего начать, что почитать, а то даже спросить не у кого
  • Вопрос задан
  • 3078 просмотров
Подписаться 5 Средний 2 комментария
Решения вопроса 1
@uwagaDDe Автор вопроса
Нашел решение (временное), возможно кому то пригодится.
Думаю оно не совсем верное, но когда сроки поджимают а сделать надо, использую пока его, в дальнейшем перепишу.

1. Пользователь авторизируется так же на Django шаблоне (Жмет на кнопку "Авторизация" > Редирект на госуслуги > получаем ответ от туда > Идем на Django)
2. Далее, у меня сделано по ролям, при попадании на стартовую страницу "обычный" юзер сразу редиректится на Vue приложение, кто ролями по выше (Администраторы и руководство) остаются на старой странице (Там необходимый функционал, который еще не перенесен на Vue)

В классе вьюхи стартовой страницы
def get(self, request, *args, **kwargs):
if request.user.roles and request.user.roles[0] in ("default"):
return redirect(vue_url()) # Перенаправление на VUE
context = self.get_context_data(**kwargs)
return self.render_to_response(context)


3. Далее, на Vue, у меня уже содержится GET запрос, который отправляется при загрузке страницы, для получения необходимых данных для дальнейшей обработки информации, в моем случае это СНИЛС.

@login_required
def user_snils(request):
user = request.user
user_data = {
'snils': user.snils,
'name': f'{user.last_name} {user.first_name}',
'role':user.roles
}
return JsonResponse(user_data)

4. Ну и дальнейшая обработка данных.
Так же, сделал проверку на Vue, что если СНИЛСа не подтягивается (от GET запроса) то пользователя редиректит обратно на логин в Django.

if (this.userInfo && this.userInfo.snils && this.userInfo.snils.length === 11) {
this.docSnils = this.userInfo.snils;
} else {
alert("Вы не авторизованы, перенаправление на главную страницу.");
window.location.href = `${config.apiUrl}/`;
return;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
AlexNest
@AlexNest
Работаю с Python/Django
Примерная схема будет следующая:
67c723baaaec0889036898.png
Ответ написан
Комментировать
@xibolba
если по самому простому, то просто встраивайте вуе темплейты в Джанго шаблоны. И настройте сборщик скриптов и стилей и также устройте в шаблон. И вуаля все заиграет на порту Джанго.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы