私のアプリには、GoogleのFirebase
を使用して認証が含まれています。私は彼らの文書https://www.firebase.com/docs/web/libraries/angular/guide/user-auth.htmlに従っています。この方法ではstateChange
が使用されていますが、わかりましたが、これはui-router
で廃止されました。 、私はエラーを処理しようとしていますので、ユーザーは認証を必要とするページにアクセスしようとすると
app.run(($transitions, $state) => {
$transitions.onError({}, ($transition$) => {
if ($transition$.$to().name !== 'init' && $transition$.$from().name !== 'error') {
$state.go("login");
}
});
});
:
app.run(["$rootScope", "$state", function($rootScope, $state) {
$rootScope.$on("$stateChangeError",
function(event, toState, toParams, fromState, fromParams, error) {
console.log('HELLO')
if (error === "AUTH_REQUIRED") {
$state.go("login");
}
});
}]);
へ:だから私はこのからの例から私のスクリプトを向けオンライン探しログイン画面に戻ります。 2番目のアプローチは機能しており、状態をlogin
に変更しようとするとフリーズします。
質問
なぜ私のスクリプトは、再直接するlogin
ページにユーザーを彼らが認証を必要とするページにアクセスしようとすると失敗していますか?
app.config(['$stateProvider', function($stateProvider,) {
$stateProvider
.state('login', {
url: '/login',
component: 'login'
})
.state('patents', {
url: '/patents',
component: 'patents',
resolve: {
currentAuth: function(authentication) {
return authentication.requireAuth();
}
});
}]);
app.factory('authentication', ['$rootScope', '$location', '$firebaseAuth', '$firebaseObject', function($rootScope, $location, $firebaseAuth, $firebaseObject) {
var auth = $firebaseAuth();
//LOAD OF OTHER AUTHENTICATION METHODS
return {
requireAuth: function() {
return auth.$requireSignIn();
}
}
}])
@ Vincentにお返事ありがとうございます。すべては動作しますが、認証が必要なアプリケーションでは複数のページがありますが、 '$ transitions.onBefore({to: 'patents。**'、from: '**'}'ユーザをログインページに戻す複数の州? –
私を無視してください。ドキュメントを読んでください。 –