2014-02-10 5 views
0

Я пишу небольшое угловое приложение js с различными видами. Некоторые представления доступны для всех пользователей, но лишь несколько просмотров доступны только для входа в систему. У меня есть небольшая форма входа в верхней части моей главной страницы [обратите внимание, что нет отдельного экрана входа].Предотвращение доступа к определенным маршрутам на основе некоторого состояния - angularjs

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

Я нашел этот вопрос stackoverflow как нечто очень похожее на мою проблему Redirecting to a certain route based on condition. См. Принятый ответ.

Но проблема в том, что у меня нет отдельного экрана входа в систему, так что я не могу использовать этот код, приведенный в принятом ответе

if (next.templateUrl == "partials/login.html") { 
      // already going to #login, no redirect needed 
     } else { 
      // not going to #login, we should redirect now 
      $location.path("/login"); 
     } 

Как я могу достичь того же раствора с встроенная форма входа, так как у меня нет отдельного URL-адреса для моего экрана входа в систему?

+0

Может любой, пожалуйста, помогите мне здесь. – user911

ответ

0

Я использую ui-router и предоставляет атрибут resolve для каждого маршрута. Когда доступ к маршруту осуществляется, сначала выполняется часть resolve. Он возвращает обещание, и страница не загружается, пока не будет разрешена. Здесь вы можете написать некоторые вызовы на стороне сервера, чтобы проверить пользователя, а если он недействителен, просто перенаправляйтесь на любую действительную страницу. Вы можете написать решение для каждого вида и проверить пользователя на каждом шаге. Я использовал узловые/экспресс-сессии для хранения зарегистрированных данных пользователя.

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