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

    @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;
    }
    Ответ написан
    Комментировать