2016-09-10 3 views
0

내 SPA에 보안 프레임 워크 auth0을 통합하려고합니다. 그 튜토리얼을 따라 갔다 : https://auth0.com/docs/quickstart/spa/angularjsAuth0 Lock10 및 ui-router

모든 것이 잘되고 구성되었다. 그러나 나는 ui-router에서 상태를 보호하는 방법을 찾지 못했습니다. 버전 9에서는 ui-router에서 {requiresLogin : true} 데이터를 사용하고있었습니다. 나는 lock10에서 그렇게하는 법을 찾지 못했고, 튜토리얼에서는 그것에 관해 아무 것도하지 않았다.

github의 샘플에서는 이전 버전 인 lock9를 계속 사용합니다. 누군가가 주정부에 로그인을 요구하도록 강제 할 수있는 방법을 알고 있습니까?

+0

당신이 http://stackoverflow.com/questions/35924577/restrict-unauthorised-access-in-component-angular-2를 사용하여 시도 적이 있습니까? – ShrekOverflow

+0

죄송합니다, 이것은 각도 1입니다. –

답변

1

이 기능이 제거 된 것처럼 보입니다. 그들은 Auth0에 규정하는 것을

$rootScope 
    .$on('$stateChangeStart', function (e, toState, toParams, fromState, fromParams) { 
      if (toState.data && toState.data.requiresLogin === true) { 
       if (!authService.isAuthenticated()) { 
        e.preventDefault(); 
        $state.go('root.login', { toState: toState, toParams: toParams }); 
       } 
      } 
     }); 

내 authService은 동일하다 : 나는 내 angular.run(..)에 다음 주어진 상태에서 로그인하는 사용자가 필요한지 확인할 수있는 비 Auth0 특정 방식에 가서 추가 제공된 예제가 포함되어 있지만, isAuthenticated() 메소드도 추가했습니다. 물론 angular.run(..)$rootScope을 삽입하고 해당 방법을 확인할 수도 있습니다.

우리 중 한 명은 Lock10 내에서이를 수행하는 방법을 배우기를 바랍니다. 그러나 그때까지는 이것이 채워집니다.

0

ui-routerdeprecated$stateChange* 때문에이 있으므로 이것을 시도 :

/*jslint latedef:false*/ 
(function() { 

    'use strict'; 

    angular 
    .module('myApp') 
    .run(run); 

    run.$inject = ['authService', '$transitions']; 

    function run(authService, $transitions) { 

    $transitions.onStart({ 
     to: function(state) { 
     return state.data && state.data.requiresLogin; 
     } 
    }, function(trans) { 
     if (!authService.isAuthenticated()) { 
     authService.login(); 
     // or if you have a login route: 
     // return trans.router.stateService.target('login'); 
     } 
    }); 
    } 

})(); 
관련 문제