Heim > Fragen und Antworten > Hauptteil
cookie中保存一段用户参与的信息,这个信息希望今天之内有效,24点之后过期,该如何设置?
巴扎黑2017-05-15 16:57:13
我以下说的都是在Angular 1.4.x 版本中操作的。
1.首先你要加载ngCookies
模块,然后在你需要的地方加在这个依赖。
2.然后具体的方法你可以参考这里$cookies。
3.一般的方法如下:
$cookies.put(key, value, [options]); // 存储一个字符串
$cookies.putObject(key, value, [options]); // 存储一个对象
$cookies.get(key); // 获取一个cookie字符串
$cookies.getObject(key); // 获取一个cookies对象
4.cookie的时间是可以自己设置的,通过$cookiesProvider
设置一些选项,具体可以看这里$cookiesProvider。
5.我这里有一个小例子你可以看一下,demo
6.具体的代码如下:
index.html
<body ng-app="MyApp">
<h1>Angular $cookies</h1>
<h2>打开控制台,看看Cookies</h2>
<p ng-controller="MyController as vm">
{{vm.data}}
</p>
</body>
app.js
(function(){
angular.module('MyApp', ['ngCookies'])
.config(cookiesConfig)
.controller('MyController', MyController);
cookiesConfig.$inject = ['$cookiesProvider']
MyController.$inject = ['$cookies'];
function cookiesConfig($cookiesProvider){
var date = new Date();
date.setDate(date.getDate() + 1);
var expires = date;
console.log(expires);
$cookiesProvider.expires = expires;
}
function MyController($cookies){
var vm = this;
vm.person = {
name: 'dreamapple',
age: 22,
address: 'China'
};
$cookies.putObject('person', vm.person);
vm.data = $cookies.getObject('person');
}
})();
phpcn_u15822017-05-15 16:57:13
cookie时间是服务器端设置的,不是网页端的事情,服务器端就简单啦,算出过期时间就好,如果是Java的话建议使用joda time,下面是使用joda time设置24点过期的例子:
DateTime now = DateTime.now();
DateTime endOfToday = now.withTimeAtStartOfDay().plusDays(1);
Cookie cookie = new Cookie(key, value);
cookie.setMaxAge(Seconds.secondsBetween(now, endOfToday).getSeconds());
cookie.setDomain(domain);
cookie.setPath("/");
response.addCookie(cookie);