Ajax AngularJs页面刷新时保留$http响应是否很热?
这个想法很简单。服务器有一个登录$HTTPPOST请求,用户经过身份验证,服务器返回有关用户的信息。我将这些信息放在一个服务中,我可以轻松地跨不同的控制器使用它,但是当我刷新页面时,数据丢失了。。。我必须再次登录才能从服务器接收数据。即使页面被刷新,有没有办法保持服务器的响应 这是执行$http请求的服务:Ajax AngularJs页面刷新时保留$http响应是否很热?,ajax,angularjs,session,request,page-refresh,Ajax,Angularjs,Session,Request,Page Refresh,这个想法很简单。服务器有一个登录$HTTPPOST请求,用户经过身份验证,服务器返回有关用户的信息。我将这些信息放在一个服务中,我可以轻松地跨不同的控制器使用它,但是当我刷新页面时,数据丢失了。。。我必须再次登录才能从服务器接收数据。即使页面被刷新,有没有办法保持服务器的响应 这是执行$http请求的服务: app.factory('AuthService', function ($http) { var authService = {}; authService.login
app.factory('AuthService', function ($http) {
var authService = {};
authService.login = function (credentials) {
var req = {
method: 'POST',
url: 'api/v1/login',
data: { email: credentials.email, password: credentials.password }
};
return $http(req);
};
return authService;
});
这是使用服务的控制器:
app.controller('LoginCtrl', function ($scope, $http, AuthService, SessionService) {
$scope.credentials = {
email: '',
password: '',
remember: true
};
$scope.login = function (credentials) {
var authentication = AuthService.login(credentials);
authentication.success(function(response) {
console.log(response);
if (response.status.code="ok"){
SessionService.set('auth', true);
} else {
alert("Couldn't perform Login!");
}
}).error(function (error) {
console.log(error);
});
};
});
您可以使用$cookieStore将身份验证响应存储在会话cookie中(将一直有效,直到您在注销机制中显式使其无效或用户关闭浏览器窗口为止)。当你的应用程序初始化时,你需要重新读取cookie,以便将信息拉回来,并且只有当cookie不存在时,才将用户指向你的登录表单
您有没有研究过存储?您使用的服务器端是什么平台?我在服务器端使用Laravel@MichaelColemanI。我尽量不使用太多的模块,但我也会研究ngStoarge。到目前为止,我通过使用window.localStorage@MatthewGreenexcellent找到了一个解决方案,angular与laravel完美地结合在一起进行身份验证。很难用一个单一的答案来回答,因为答案有点复杂。我想如果你换一种方式做可能会更好,基本上我认为@Nicholas Smith的答案是正确的,但是Laravel有自己的认证机制,我强烈建议你使用它。所以有两个问题:1。您不使用cookies的具体原因是什么?2.请提供尽可能多的信息,你有什么设置到目前为止。特别是用于
api/v1/login
routeThanks的PHP,用于您的响应。在搜索web时,我偶然发现了本地存储?这不是比$cookieStore更好的解决方案吗?为什么(不)?本地存储可以工作,但存储的信息不会随请求自动发送,因此我认为您必须加载页面,然后运行一些javascript从本地存储提取信息,然后通过API调用将其发送到服务器以处理您的登录,vs仅在初始页面请求中提供它。