У меня есть веб-приложение, которое использует ui-router для маршрутизации. Существует модуль управления пользователями, где определенные роли предоставляются пользователю (роль x, y и z). Когда пользователь с ролью x регистрируется в нем, он будет ограничен определенными состояниями ui-router, например. 'панель приборов'.Избегайте прямого доступа к URL в AngularJS
Когда пользователь входит в систему, я сохранил роль пользователя в переменной cookie (используя $cookie
). Я также использовал ng-hide
, чтобы скрыть Панель навигации боковую панель, когда пользователь с ролью х авторизован так:
HTML:
<li ui-sref-active="active">
<a ui-sref="dashboard" ng-hide="roleIsX()">
<i class="fa fa-laptop"></i> <span class="nav-label">Dashboard</span>
</a>
</li>
Контроллер:
$scope.roleIsX = function() {
if ($cookies.get('loggedInUserRole') === "x")
return true;
else
return false;
}
Это работает нормально на данный момент, но проблема в том, что когда пользователь регистрируется, он может напрямую перейти к URL-адресу, записав его в адресной строке. Есть ли простой способ решить эту проблему с учетом моей ситуации?
Вы не можете остановить браузер от просмотра, единственное, что я мог думать о том, а) все делается на одной странице, так что нет никаких других адресов или b) вы сохраняете в файле cookie последнюю страницу, на которой был пользователь, и на каждой странице, которую вы проверяете, чтобы убедиться, что они пришли с правой страницы или перенаправили их на главную страницу. – IfTrue
Если пользователь с ограниченным доступом к URL-адресу входит в него, тогда ему должна быть показана страница с недопустимым именем и т. Д. Как я могу сделать это в Angular? – Sibtain
В контроллере для этой страницы вы можете проверить, вошли ли они в систему и проверить, однако вы назначаете им доступ, а затем перенаправляете, если их там не должно быть. – IfTrue