Page 184 - AngularJS权威教程
P. 184
164 第 16 章 XHR 实践
if (Auth.isLoggedIn()) {
// 用户登录了,但没有访问当前视图的权限
$location.path('/');
} else {
$location.path('/login');
}
}
});
});
3. 发送经过身份验证的请求
当我们通过了身份验证,并取回了用户的授权令牌后,就可以在向服务器发送请求时使用令
牌。同前面内容介绍的一样,我们希望服务器可以根据这个唯一的令牌对用户进行验证。从服务
器的角度看,当收到一个带有令牌的请求时,验证令牌的有效性是服务器的责任之一。
如果提供的令牌是合法的,且与一个合法用户是关联的状态,那服务器就会认为用户的身份
是合法且安全的。
通过令牌进行身份验证的安全性取决于通信所采用的通道,因此尽可能地使用SSL
连接可以提高安全性。
如果用户已经通过了身份验证,可以在发送请求时单独给每个请求都加入验证信息,或者把
令牌附加到所有的请求中。
手动使用身份令牌 手动创建一个可以发送令牌的请求,只要将token当作参数或请求头添加
到请求中即可。例如,如果我们想对服务器发出一个请求,此时我们正在这个服务器上通过
Backend服务请求用户分析数据:
angular.module('myApp', [])
.service('Backend', function($http, $q, $rootScope, Auth) {
this.getDashboardData = function() {
$http({
method: 'GET',
url: 'http://myserver.com/api/dashboard'
}).success(function(data) {
return data.data;
}).catch(function(reason) {
$q.reject(reason);
});
};
});
简单地将token当作参数(或请求头)发送就可以进行令牌验证:
angular.module('myApp', [])
.service('Backend', function($http, $q, $rootScope, Auth) {
this.getDashboardData = function() {
$http({
method: 'GET',
url: 'http://myserver.com/api/dashboard',
params: {
token: Auth.getToken()
}).success(function(data) {
return data.data;
}).catch(function(reason) {
$q.reject(reason);