suchen

Heim  >  Fragen und Antworten  >  Hauptteil

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

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

phpcn_u1582phpcn_u15822744 Tage vor771

Antworte allen(2)Ich werde antworten

  • 巴扎黑

    巴扎黑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');
    }
    
    })();

    Antwort
    0
  • phpcn_u1582

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

    Antwort
    0
  • StornierenAntwort