2

トークン認証を使用していますが、現在、ユーザーがサインインしていない場合、「/login」の URL パスにリダイレクトされます。ユーザーがパス「/createUser」に移動できるようにしたいと考えています。以下のコードは、ユーザーがログインしていない場合にログイン ページに誘導するものです。新しいユーザーの場合、ユーザーが「/createUser」パスに移動できるようにするにはどうすればよいですか?

angular.module('Demo', [
    'ngRoute'
]).run(function(
  $rootScope,
  $location,
  $http,
  $window,
  AuthFactory,
  UserFactory,
  TitleFactory,
  SkillsFactory
) {
  $rootScope.$on('$routeChangeStart', function(event, next) {
      console.log(next);
      if (AuthFactory.isAuthenticated()) {
        $http.defaults.headers.common['Authorization'] = 'Token token=' + $window.sessionStorage.getItem('demo.user');

      UserFactory.fetch();
      TitleFactory.fetch();
      SkillsFactory.fetch();
    } else {
     $location.path('/login');
   }
   });
});
4

3 に答える 3

0

パスが「/createUser」であるかどうかを確認する条件を追加しました。ルートが変更されるたびに $routeChangeStart が起動されるため、ユーザーが「/createUser」に移動すると、ユーザーが認証されているかどうかが確認されません。問題を解決するために見つけた最も簡単な方法。誰かが答えに欠陥があることに気づいたら、私に知らせてください。

$rootScope.$on('$routeChangeStart', function(event, next) {
  if ($location.path() === '/createUser'){
  } else if (AuthFactory.isAuthenticated()) {
    $http.defaults.headers.common['Authorization'] = 'Token token=' + $window.sessionStorage.getItem('demo.user');
    UserFactory.fetch();
    TitleFactory.fetch();
    SkillsFactory.fetch();
} else {
  $location.path('/login');
}
});
于 2014-11-23T18:30:15.427 に答える
0

状態階層を作成できるui-routerを見てください。状態階層を使用すると、「ログインしていない場合はリダイレクトする」ロジックを自分の'authenticated'状態 (認証が必要なすべての状態の祖先) に追加して、ユーザーが問題なく他の状態を切り替えることができます。

于 2014-11-23T17:34:57.670 に答える