我會使用$httpProvider設置至少一個基於令牌/用戶檢查的基於令牌的登錄。例如,您可以使用Auth
服務和方法(如login()
,logout
,isLogedIn()
)來管理髮球人,以處理狀態並將其保存到$cookies。這樣,惡意用戶就可以竊取並獲得對html模板的訪問權限,但是沒有數據庫數據...... Minnifying你的代碼也有助於避免這種風險。
angular.module('myApp', [])
.run(['Auth', '$location', '$rootScope', function (Auth, $location, $rootScope) {
$rootScope.$watch(function() {
if (!Auth.isLogedIn())
$location.path("/login");
return $location.path();
});
}])
.config(['$routeProvider', '$httpProvider',
function ($routeProvider, $httpProvider) {
$routeProvider
.when('/home', {templateUrl: 'partials/home.html'})
.when('/login', {templateUrl: 'partials/login.html', controller: 'LoginCtrl'})
.when('/logout', {templateUrl: 'partials/login.html', controller: 'LogoutCtrl'})
.otherwise({redirectTo: '/home'});
$httpProvider.defaults.headers.common["Authorization"] = "";
$httpProvider.defaults.headers.common["X-User"] = "";
}
]);
從代碼片斷:
$httpProvider.defaults.headers.common
將設置在每次請求一個叫頭。
$httpProvider.defaults.headers
將僅爲下一個請求設置發球人。
- 對
run
$watch
設置爲$rootScope
將在每次更改爲範圍時觸發isLogedIn()
應該使用數據庫中的條目檢查headder標記。
我正在研究一個類似的項目,我得出的結論是客戶端代碼確實不安全,您應該做的是每次用戶嘗試執行一個操作時檢查後端會話他們必須登錄(管理面板中的任何操作) – Abdel