我们希望将用户的授权信息存储在cookie中,在刷新(F5)浏览器时不应丢失.
我们希望将授权信息存储在"永久cookie"中,以防用户在登录时选择"记住我"复选框.
javascript cookies session-cookies angularjs angular-cookies
我试图在应用程序的结帐过程中在页面之间传递数据,但它没有按照应有的方式工作.我做了一些阅读,大多数人建议使用服务,但唯一的问题是当页面刷新(用户点击刷新或稍后返回)时,服务中的所有数据都会消失.这是有道理的,因为服务中的数据并不是持久的,而是导致问题.
所以问题是:如何在angularJS中的页面之间传递数据,并保持页面刷新后传递的数据?
这是我的代码到目前为止(我尝试使用查询字符串):
.service('checkoutService',
function checkoutService($location, Address, $routeParams, TicketGroup) {
var ticket_quantity = 0;
var ticket_group = {};
var selected_address = {};
this.loadInformation = function() {
if(!ticket_quantity && $routeParams.ticket_quantity)
ticket_quantity = $routeParams.ticket_quantity;
if(!ticket_group && $routeParams.ticket_group_id)
ticket_group = TicketGroup.get({id: $routeParams.ticket_group_id});
if(!selected_address && $routeParams.address_id)
selected_address = Address.get({id: $routeParams.address_id});
}
this.setTicketQuantity = function(quantity) {
ticket_quantity = quantity;
$location.path().search({ticket_quantity: quantity});
}
this.getTicketQuantity = function() {
return ticket_quantity;
}
this.setTicketGroup = function(object) {
ticket_group = object;
$routeParams.ticket_group = object.id;
}
this.getTicketGroup = function() {
return …Run Code Online (Sandbox Code Playgroud) 我有一个简单的服务,以角度设置cookie,但没有明显的方法来测试它们是否已经设置在端到端测试中.
要测试的代码就像
var splashApp = angular.module('splashApp', ['ngCookies']);
splashApp.controller('FooterController', function ($location, $cookies) {
$cookies.some_cookie = $location.absUrl();
});
Run Code Online (Sandbox Code Playgroud)
但我找不到任何关于如何测试的文档.这是我发现的:
我也试过了
angular.scenario.dsl('cookies', function() {
var chain = {};
chain.get = function(name) {
return this.addFutureAction('get cookies', function($window, $document, done) {
var injector = $window.angular.element($window.document.body).inheritedData('$injector');
var cookies = injector.get('$cookies');
done(null, cookies);
});
};
return function() {
return chain;
}
});
Run Code Online (Sandbox Code Playgroud)
但是这只返回父浏览器的cookie,而不是我想要测试的页面.
有关如何执行此操作的任何示例?
在观看AngularJS"Massive AngularJS apps"演示文稿(https://docs.google.com/file/d/0B4F6Csor-S1cNThqekp4NUZCSmc/edit)之后,我试图实现以下场景
1)用户请求index.html(服务器端生成)
2)Flask检查是否存在身份验证cookie
3)如果缺少cookie,则重定向到login.html(还生成服务器端)
4)在登录页面上,POST登录信息.
5)Flask验证用户+密码 - >设置cookie,重定向到/
6)Flask检查cookie,检索用户配置文件+生成index.html
7)客户端app启动
8)客户端应该调用/ token(带cookie)
9)Flask验证请求,生成新访问+刷新令牌并使exp cookie失效
10)客户端收到令牌并可以使用令牌使用基本身份验证头进行正常的REST调用
我遇到的问题是一旦必须生成index.html,就实现了维护身份验证的方式.我建议将令牌包含在索引页面的配置文件中(作为javascript变量),当angularjs配置时,将其复制到window.session存储中,但我不太确定它的安全性如何?
这是一个可接受的流量安全明智和/或有更好的方法吗?
编辑:更新的问题+添加了我将用作序列图的流程:EDIT2:我注意到我无法重新加载页面,因为cookie将过期,所以我开始怀疑使用访问令牌..
