Время запуска angularjs при входе в пользовательский сеанс истекло

0

Я новичок в AngularJS. Другой разработчик объединил нашу платформу электронной коммерции, используя AngularJS как часть решения. У нас есть встроенные модальные оверлеи, и я конвертирую все наши AngularJS alert() для использования модального.

Пока что так хорошо, за исключением финального предупреждения(), которое запускается, когда сеанс сеанса пользователя вошел в систему. Мы используем http://adamalbrecht.com/2013/12/12/creating-a-simple-modal-dialog-directive-in-angular-js/ для создания нашей модальной директивы, но я не могу заставить это работать без пользовательский ввод - все эти модальности запускаются пользователями, нажимающими кнопки и входы, но это не вызвано действием пользователя. Все, что я пробовал, привело к тому, что ReferenceError: $ scope не определен

Я хотел бы поделиться кодом, но он принадлежит компании, поэтому я не могу поделиться им. Просто интересно, если кто-то там собрал модальный метод AngularJS, который запускает, когда пользователь регистрируется в сеансе, чтобы сообщить им, что им нужно снова войти в систему.

Благодарю.

  • 1
    Трудно догадаться, не увидев какой-либо код.
  • 0
    Я понимаю. В основном я ищу тех, кто решил эту проблему, чтобы понять, с чего начать.
Теги:
session

1 ответ

1

Это обычная проблема в приложениях с одной страницей. С помощью Angular вы можете решить это с помощью перехватчика $ http.

Идея заключается в том, что сеанс истек в первый раз, когда пользователю требуется какое-либо действие из бэкэнд для перенаправления на страницу входа в систему или модальное диалоговое окно, используемое для входа в систему. Истекший сеанс обнаружен из самого ответа.

Пример:

.factory('httpAuthInterceptor', function ($q) {
  return {
    'responseError': function (response) {
      // NOTE: detect error because of unauthenticated user
      if ([401, 403].indexOf(response.status) >= 0) {
        // NOTE: here you can trigger login modal dialog opening 
        return response;
      } else {
        return $q.reject(rejection);
      }
    }
  };
})

.config(function ($httpProvider) {
  $httpProvider.interceptors.push('httpAuthInterceptor');
});
  • 0
    Как запустить модальное диалоговое окно? из оператора if () {}? Все, что я пробую, возвращается с «ReferenceError: $ scope не определен» в браузере.
  • 0
    Например, вы можете транслировать событие на $ rootScope.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню