この解決機能は他の場所でも使用でき、私は約束が拒否されたときになぜプロフィールページがまだ実行されているのか分かりません。このバグは、ログインしたり、ストレージからトークンを削除したり、プロファイルページに移動したりすることで発生しました。これはすべての認証手順を経てログアウトします。リダイレクションラインに当たっても、認証がクリアされているため、プロファイルページがロードされ、エラーがスローされます。角度解決は拒否されましたが、まだページがロードされています
あなたが提供できるヘルプはすばらしいでしょう。あなたがより多くの情報を必要とするかどうかを教えてください。それは却下さ約束を返さないとスローされません。
app.configを(「$ routeProvider」)
.when('/profile', {
templateUrl: '/templates/profile.html',
controller: 'ProfileController',
resolve: {
auth: function (SessionService) {
SessionService.resolve()
}
}
}).
otherwise({
redirectTo: '/login'
})
function resolve() {
if (self.isAuthenticated()) {
return $q.when({auth: true})
} else {
$q.reject({auth: false})
self.logout() // first we go here
}
}
}
function logout() {
var auth = self.storage()
if (...) {
...
} else {
self.clearUserAuthentication() // then here
$location.path('/login') // it redirects here, but still initializes the profile controller
}
}
解決が失敗した場合でも$ q.rejectを返す必要がありますか? @dfsq – Kraken
'SessionService.resolve()'は、解決または拒否される約束を返す必要があります。または、エラーを「投げる」(拒否と同じ) 'resolve'メソッドで' return $ q.reject({auth:false}) 'を追加する必要があることがわかります。 – dfsq