要防止用戶訪問你所要做的幾件事情路線:
首先,設置你的路由,並添加像「訪問」屬性:使用AllowAnonymous:true或false
// in app.js
var myApp = angular.module('myApp',['ngResource', 'ngCookies', 'ngRoute']);
myApp.config(function ($httpProvider, $routeProvider) {
window.routes = {
'/Login':
{ templateUrl: '/Account/Login',
controller: 'AccountController',
access : {allowAnonymous : true}
},
'/MembersPage':
{ templateUrl: '/Home/SomePage,
controller: SomePageController',
access: {allowAnonymous:false}
}
};
for (var path in window.routes) {
$routeProvider.when(path, window.routes[path]);
}
$routeProvider.otherwise({ redirectTo: '/Login' });
});
其次,你必須認識到一個認證的用戶:
有幾種方法可以做到這一點,但我更喜歡在使用'服務'時使用AngularJS的強大功能。因此,我創建了一個'UserService',用於存儲當前用戶名和一個值 - 指示是否通過身份驗證。
// in UserService.js
myApp.factory('userService', function() {
var user = {
isLogged: false,
username: '',
};
var reset = function() {
user.isLogged = false;
user.username = '';
};
return {
user: user,
reset : reset
};
});
最後一件事,捕捉路由變化事件,並相應地對待他們:
我們在的地方服務後,現在是時候使用它和實施路徑的檢查功能。有幾種攔截路由更改事件的方法,但我們只對那些在用戶重定向之前發生的方法感興趣,因此我們可以檢查是否經過身份驗證:'$ routeChangeStart','$ locationChangeStart'。在這裏,我們可以檢查用戶將要訪問的路由是否允許匿名訪問以及用戶是否登錄。如果發生故障,我們可以顯示錯誤消息並將用戶重定向到登錄頁面。
// in RootController.js
myApp.controller('RootController',
function ($scope, $route, $routeParams, $location, $rootScope, authenticationService,
userService, toaster) {
$scope.user = userService.user;
$scope.$on('$routeChangeStart', function (e, next, current) {
if (next.access != undefined && !next.access.allowAnonymous && !$scope.user.isLogged) {
$location.path("/Login");
}
});
$scope.logout = function() {
authenticationService.logout()
.success(function (response) {
userService.reset();
toaster.pop("info", 'You are logged out.', '');
});
};
$rootScope.$on("$locationChangeStart", function (event, next, current) {
for (var i in window.routes) {
if (next.indexOf(i) != -1) {
if (!window.routes[i].access.allowAnonymous && !userService.user.isLogged) {
toaster.pop("error", 'You are not logged in!', '');
$location.path("/Login");
}
}
}
});
});
完整的文章是在這裏:http://net-daylight.blogspot.ro/
希望它能幫助!
請嘗試閱讀本文http://stackoverflow.com/help/deleted-answers,以獲得更多瞭解如何**不**回答。即:「不能從根本上回答問題的答案」:**僅僅是一個鏈接到外部網站** – 2013-12-02 12:44:11