programing

AngularJs - '로그인한' 사용자에 대한 접근을 제한하는 최선의 방법

powerit 2023. 9. 20. 20:46
반응형

AngularJs - '로그인한' 사용자에 대한 접근을 제한하는 최선의 방법

만들고 있는 앱의 로그인 시스템을 설정하는 데 어려움을 겪고 있습니다.

사용자가 로그인하거나 로그아웃할 때 쿠키를 설정할 수 있습니다.사용자가 로그인되어 있는지 모든 보기를 테스트하는 것은 그다지 우아한 솔루션이라고 생각하지 않으며, 여기저기 페이지가 갈라진 틈으로 떨어질 수도 있습니다(다소 큰 앱입니다).

경로 변경을 어떻게든 가로채서 사용자가 로그인되어 있는지 확인하고, 그렇지 않으면 로그인/사용자 만들기 페이지로 보내는 것이 가장 좋은 방법이라고 생각합니다.몇 가지 방법을 찾았지만 공식적으로 기록된 것은 없는 것 같습니다.실제 사례에서 이런 방식을 사용해 본 사람이 있는가요? 그리고 효과적이었습니까?

내 경로 파일은 다음과 같습니다.

'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: '/'});
}]);

도움이나 제안, 문서화된 실제 사례에 대한 요점을 알려주시면 대단히 감사하겠습니다!

다음 예제를 기본으로 사용하여 제안한 대로 경로 변경을 차단하고 그에 따라 작업할 수 있습니다.

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

        if (!userAuthenticated && !next.isLogin) {
            /* You can save the user's 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})

프로젝트에 행운을 빌어요!

내 의견:

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

그리고 여기 당신의 각진 앱이...

언급URL : https://stackoverflow.com/questions/18918579/angularjs-best-way-to-limit-access-to-logged-in-users

반응형