私はAngularの初心者です。どのページでも、ユーザーがログインしているかどうかを確認し、ログインしていない場合はログイン ページに転送し、現在のパスを GET パラメータとして渡すAngular サービスを作成しようとしています。
私はほとんどそこにいますが、うまく機能していません。私が抱えている問題は次のとおりです。ユーザーがに行くと#/articles/my-articles/
、に転送され#/login/?next=%2Farticles%2F:module%2F
ます。
つまり、Angular が実際の URL ではなく、ルート パターンを渡しているように見えます。
これは私の認証コードです:
auth.run(['$rootScope', '$location', '$user', 'TOKEN_AUTH', 'PROJECT_SETTINGS', function ($rootScope, $location, $user, TOKEN_AUTH, PROJECT_SETTINGS) {
var MODULE_SETTINGS = angular.extend({}, TOKEN_AUTH, PROJECT_SETTINGS.TOKEN_AUTH);
$rootScope.$on('$routeChangeStart', function (e, next, current) {
if (next.$$route && !next.$$route.anonymous && !$user.authenticated) {
var nextParam = next.$$route.originalPath;
$location.url(MODULE_SETTINGS.LOGIN + '?next=' + nextParam);
}
});
}]);
を使用してハッキーな方法で元のパスを取得できますが、current.params.module
それは役に立ちません。なぜなら、それrouteChangeStart
は数回起動current
され、最後の起動以外のすべてでオブジェクトが定義されていないようだからです。
これは私のルートファイルです:
articles.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/articles/:module/', {
templateUrl: 'views/articles/article_list.html',
controller: 'ArticlesListCtrl'
})
.when('/articles/:module/:id/', {
templateUrl: 'views/articles/article_detail.html',
controller: 'ArticlesDetailCtrl'
});
}]);
この問題を解決するにはどうすればよいですか?