angular.js - angularjs中该如何设置一段cookie今天24点之后过期?

浏览:36日期:2023-01-27

问题描述

cookie中保存一段用户参与的信息,这个信息希望今天之内有效,24点之后过期,该如何设置?

问题解答

回答1:

我以下说的都是在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’);}})();回答2:

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);

相关文章: