我想限制用戶在我的角度js應用程序中的訪問/儀表板視圖和/添加項目視圖或任何其他視圖。如何在angularjs應用程序中限制視圖
這是我的路由器
app.config(function($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise('login');
$stateProvider.
state('app.dashboard', {
url: '/dashboard',
templateUrl: appHelper.viewsPath('dashboard/views/dashboard'),
controller: 'DashBoardController as DashBordCtrl',
}).
// Add Item
state('app.add-item', {
url: '/add-item',
templateUrl: appHelper.viewsPath('item/views/add-item'),
controller: 'ItemController as ItemCtrl',
})
});
登錄我存儲我的本地存儲的令牌後。如果令牌不存在,我希望用戶不訪問任何視圖。
這是我的登錄控制器
$scope.register = function(credentials){
LoginService.post(credentials,function(success){
$state.go('app.add-item');
SessionService.set("token",success.accessToken);
},function(error){
FlashService.showError("Please Enter Valid Email Password");
});
}
}
在401錯誤我正在重定向到登錄頁面是這樣的:
app.config(function ($httpProvider) {
// $http.defaults.headers.common.Authorization = '';
delete $httpProvider.defaults.headers.common['X-Requested-With'];
$httpProvider.interceptors.push(function ($location, $q, SessionService, FlashService) {
return {
request: function (config) {
config.headers = config.headers || {};
config.headers.Authorization = SessionService.get('token');
return config;
},
responseError: function (response) {
if (response.status === 401) {
SessionService.unset('token');
$location.path('/login');
}
return $q.reject(response);
}
};
});
});
但是,如果我在URL類型/加項,我的加載項頁面正在打開,然後突然關閉,因爲服務器返回401,並且登錄頁面出現。如果用戶未登錄,我不想打開任何視圖。
我是新的angularjs,我很困惑如何做到這一點。請幫忙。
thanx的回覆,但我寫/ add-item在url中,然後登錄頁面打開時,我的add-item頁面仍然閃爍一秒鐘。我的問題是我希望用戶登錄頁面如果令牌不存在,watever是網址是.. –