0
我們正在製作一個使用角度和UI路由器來控制狀態的流星應用程序。如果用戶無法訪問網站的主要部分,我們想要顯示促銷網站。在MongoDB的用戶集合中的用戶文檔上會有一個標誌,表明它們是否有權訪問。流星 - 使用UI路由器加載狀態之前的呼叫功能
如果他們沒有訪問權限,我們如何在加載狀態之前指向這個促銷狀態?基本流程將調用一個函數來檢查它們是否有權訪問,然後根據此狀態加載狀態。
我們正在製作一個使用角度和UI路由器來控制狀態的流星應用程序。如果用戶無法訪問網站的主要部分,我們想要顯示促銷網站。在MongoDB的用戶集合中的用戶文檔上會有一個標誌,表明它們是否有權訪問。流星 - 使用UI路由器加載狀態之前的呼叫功能
如果他們沒有訪問權限,我們如何在加載狀態之前指向這個促銷狀態?基本流程將調用一個函數來檢查它們是否有權訪問,然後根據此狀態加載狀態。
在爲受保護的頁面的路徑(或在我的情況下,一組保護的頁面的母公司),把這個:
.state('app', {
abstract: true,
template: '<mymenu></mymenu>',
controller: Menu,
resolve: {
currentUser: ($q) => {
var deferred = $q.defer();
Meteor.autorun(function() {
if (!Meteor.loggingIn()) {
if (Meteor.user() == null) {
deferred.reject('AUTH_REQUIRED');
} else {
deferred.resolve(Meteor.user());
}
}
});
return deferred.promise;
}
}
});
的決心部分將拒絕該路線(參見下面的處理程序) ,並確保Meteor.user()在激活路由之前完全加載。
將這個處理程序在你的.RUN方法:
function run($rootScope, $state) {
'ngInject';
$rootScope.$on('$stateChangeError',
(event, toState, toParams, fromState, fromParams, error) => {
console.log("$stateChangeError: "+error);
if (error === 'AUTH_REQUIRED') {
$state.go('login');
}
}
);
}
將您重定向到登錄頁面(或您選擇的任何其他頁面)
大,感謝邁克! – DJDMorrison