我使用的Web框架具有基于cookie(或令牌)的身份验证。当用户注册回发时,服务器将身份验证令牌放在将自身附加到用户浏览器的cookie中。所有后续请求都包含此令牌,因此在这种意义上是安全的。
我的问题 :在用户注册以获取用户浏览器上的auth-token后,是否必须执行整页回发刷新?或者我可以简单地让服务器在成功的用户注册(通过ajax完成)时返回一个auth令牌(通过ajax)?如果可能,我更喜欢后者。
感谢。
答案 0 :(得分:1)
如果您的框架提供了一个令牌,您只需将其添加到所有后续请求的标头中。
使这个永久性需要额外的代码(例如:在localStorage中编写)
我不知道您的框架想要的Header :)但我可以假设您的登录控制器可能如下所示:
angular.module('coolModule', [])
.controller('CoolController', function ($scope, $http) {
$scope.loginButton = function () {
// assuming username and password are in the scope
$http.post('/api/login', { $scope.username, $scope.password })
.success(function (data, status, headers, config) {
$http.defaults.headers.common['X-My-Token'] = data.token;
});
}
})
后续请求将有一个X-My-Token
标头,通常用于标识
编辑: 是的,设置一个cookie(在javascript或服务器响应中)将使它在每次请求时被发送(就像这个互联网世界中的所有cookie) 如果你正在开发后端也会更加优雅,让后端向客户端发送cookie,而不是像你评论的那样手动编写^ _ ^
Cookie 有一些专业:就像过期日期一样,有些缺点:从javascript中读取它并不是很优雅(通常需要一个包装器lib,angular-cookie ,浏览器兼容性。)
在两种情况下,如果Cookie过期或令牌无效(因此您将收到40x响应),则必须使用某些angular.js代码处理失败