在 AngularJs 页面刷新时很想保留 $http 响应?
Hot to preserve $http response on page refresh in AngularJs?
这个想法很简单。对服务器有一个 Login $http POST 请求,用户已通过身份验证并且服务器 returns 有关用户的信息。我把这些信息放在一个服务中,我可以很容易地跨不同的控制器使用它,但是当我刷新页面时,数据丢失了......我必须再次登录才能从服务器接收数据。有什么办法即使页面刷新也能保持服务器的响应?
这是执行 $http 请求的服务:
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 中(将一直存在,直到您在注销机制中明确使其无效或用户关闭浏览器 window)。当您的应用程序初始化以拉回信息时,您需要重新读取该 cookie,并且仅当该 cookie 不存在时才将用户引导至您的登录表单。
https://docs.angularjs.org/api/ngCookies/service/$cookieStore
这个想法很简单。对服务器有一个 Login $http POST 请求,用户已通过身份验证并且服务器 returns 有关用户的信息。我把这些信息放在一个服务中,我可以很容易地跨不同的控制器使用它,但是当我刷新页面时,数据丢失了......我必须再次登录才能从服务器接收数据。有什么办法即使页面刷新也能保持服务器的响应?
这是执行 $http 请求的服务:
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 中(将一直存在,直到您在注销机制中明确使其无效或用户关闭浏览器 window)。当您的应用程序初始化以拉回信息时,您需要重新读取该 cookie,并且仅当该 cookie 不存在时才将用户引导至您的登录表单。
https://docs.angularjs.org/api/ngCookies/service/$cookieStore