2015-07-30 2 views
1

Впервые разрабатывается угловое приложение, и мне интересно, какой именно способ обеспечить безопасность маршрута/уровня контроллера. Я в принципе хочу, чтобы ограничить пользователь в некоторых приложениях части и это требование:Безопасность на уровне контроллера в угловом

  1. запрещает доступ к определенным маршрутам, если пользователь не вошел в системе, перенаправлять для входа, если пользователь не вошли в системе, если пользователь авторизован доступ к этой странице.
  2. Запретить доступ к определенным маршрутам на основе полей пользователей, например, если пользователь имеет поле объекта verified: false или каким-либо другим способом удержать данные пользователя, а затем перенаправить пользователя на страницу проверки. Если пользователь имеет verified: true, разрешите доступ к странице.

Как я, хотя сделать это было бы, чтобы сделать услугу, которая будет иметь метод verified() и возвращает правильное значение для пользователя, я хотел бы использовать службу в контроллере, и этот метод вручную перенаправить на основе вышеуказанные требования. Разумеется, моя забота - это безопасность, но и не изобретать велосипед.

+0

Почти все подходы могут быть легко 'взломаны' из консоли, или консистентной/Tampermonkey, один вон» t даже нужно подделывать активы JS. Я не думаю, что уместно говорить о «безопасности» в контексте клиентского приложения, особенно его частей, которые не поддерживаются на стороне сервера. – estus

ответ

1

Например, в run блоке:

$rootScope.$on('$stateChangeStart', 
    function (event, toState, toParams, fromState, fromParams) { 
     var access_denied = [ 
      (toState.access === 'public'), 
      (toState.access === 'protected'), 
      (toState.access === 'private')]; 

     // example restriction 
     if (accedd_denied[1] || accedd_denied[2]) { 
      event.preventDefault(); 
      $state.go('login'); 
     } 

Пример маршрутизатора состояние:

state('login', { 
    url: '/user/login', 
    controller: 'UserController', 
    access: 'public', 
}) 
+0

Спасибо за ваш ответ. Что делать, если у меня есть более одного доступа. Вот что я имею в виду, допустим, защищенный недоступен для пользователей, которые не зарегистрированы, а частные недоступны для пользователей, которые не проверяются. Как бы вы поместили оба ограничения на маршрут? –

Смежные вопросы