1
如果您的靜態URL導致內容與身份驗證方案結合使用,則角度會導致嚴重的安全問題。如果未註冊的用戶訪問該頁面,則在重定向到安全位置之前,內容會在屏幕上閃爍片刻。我發現這個問題,廣泛搜索,並解決了$ routeConfig中的解析屬性。不幸的是,無論我做什麼,它都不起作用。下面的代碼:在Angular中延遲模板呈現以進行身份驗證檢查
$routeProvider.when('/dashboard/:id', {
templateUrl: 'js/partials/dashboard.html',
controller:'DashCtrl',
access: access.user,
resolve: {
login: function(authService) {
var promise = authService.isLoggedIn();
promise.then(function(data){
// We're in successfully
}).catch(function(err){
// ew, go away, redirect to login page
window.location = "login";
});
}
}
});
AuthService.isLoggedIn()看起來像:
isLoggedin : function() {
return $http.get("users/session_check").then(function(result) {
if (result.data) {
if (user == undefined)
{
placeholderService.populatePlaceholders();
user = result.data;
}
return result.data;
} else {
return $q.reject("Please log in.");
}
});
}
不管是什麼,視圖閃爍。我的頁面上沒有ng-cloaks。我不知道還有什麼可以做的,但這已經變得徹頭徹尾的憤怒。
也許我沒有正確記住,但我認爲功能應該會返回一個承諾。 (例如放回諾言;在$ routeProvider的登錄函數結尾處)。 – mgilson 2015-01-26 23:39:10
@mgilson是的,就是它X_X – Siraris 2015-01-26 23:54:51
噢,不錯。我沒有足夠的信心把它作爲一個答案,沒有嘗試它:-)。我現在把它作爲答案。 – mgilson 2015-01-27 00:00:17