Подтвердить что ты не робот

AngularJs - лучший способ ограничить доступ к "зарегистрированным" пользователям

Я борюсь с настройкой системы входа для приложения, которое я создаю.

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

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

Мой файл маршрута выглядит так:

'use strict';

app.config(['$routeProvider', function ($routeProvider) {
    $routeProvider
        // LOGIN
        .when('/User/LoginUser', {templateUrl: 'views/user/login.html',controller: 'loginCtrl'})

    ....... more routes here.......

        // DEFAULT
        .otherwise({redirectTo: '/'});
}]);

Любая помощь или предложения, или указывает на документально подтвержденные реальные примеры того, как я буду делать что-то подобное, будем очень благодарны!

4b9b3361

Ответ 1

Вы можете перехватить изменения маршрута, как вы предложили, и действовать соответствующим образом, используя следующий пример в качестве основы:

    $rootScope.$on('$routeChangeStart', function (event, next) {
        var userAuthenticated = ...; /* Check if the user is logged in */

        if (!userAuthenticated && !next.isLogin) {
            /* You can save the user location to take him back to the same page after he has logged-in */
            $rootScope.savedLocation = $location.url();

            $location.path('/User/LoginUser');
        }
    });

Кроме того, добавьте isLogin: true в определение маршрута вашей страницы входа, например:

$routeProvider
    // LOGIN
    .when('/User/LoginUser', {templateUrl: 'views/user/login.html',controller: 'loginCtrl', isLogin: true})

Удачи вам в вашем проекте!

Ответ 2

Мое мнение:

<?php if (!$_SESSION['user_id'] { forward(/user/access); }) ?>

и вот ваше приложение angular...