具有 AngularJs 的 ElectronJs:如果应用程序重新启动,Cookie 将不保存值

ElectronJs with AngularJs: Cookies are not holding values if application is restarted

我正在用它学习 ElectronJs so I have started with making a simple AngularJs 应用程序,在这里我开始磕磕绊绊。

我想存储一些持久性数据,例如用户令牌和电子邮件 ID 等。所以,为了做到这一点,我使用 $cookieStore

下面给出的示例在 (firefox, chrome) 浏览器中运行良好,但是当我 运行 在电子浏览器 window 中使用相同的示例时,它会临时存储值并在重新启动时丢失值。

示例:

<!DOCTYPE html>
<html ng-app="myApp">

<head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.1/angular.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.1/angular-cookies.min.js"></script>
    <meta charset="utf-8">
    <title>AngularJS Cookies Example</title>
</head>

<body ng-controller="MyController">
    {{platformCookie}} {{myFruit}} {{myFlower}}

    <input type="button" value="setCookie" ng-click="setCookie()" />
    <input type="button" value="getCookie" ng-click="getCookie()" />

    <script>
        var myApp = angular.module('myApp', ['ngCookies']);

        myApp.controller('MyController', ['$scope', '$cookies', '$cookieStore', 
        function($scope, $cookies, $cookieStore) {
            $cookies.userName = 'Vikas';

            $scope.setCookie = function()
            {
                $scope.platformCookie = $cookies.userName;
                $cookieStore.put('fruit', 'Apple');
                $cookieStore.put('flower', 'Rose');



                console.log('set cookies');
            }

            $scope.getCookie = function()
            {
                $scope.myFruit = $cookieStore.get('fruit');
                $scope.myFlower = $cookieStore.get('flower');

                console.log($scope.myFruit);
            }

        }]);
    </script>
</body>

</html>

编辑 Electron Session

我也曾尝试使用 Electron Session 来创建持久性 cookie,但是,它也无法正常工作并在应用程序重新启动时被处理掉。

代码:

const session = require('electron').session;
const ses = session.fromPartition('persist:name');

 // Query all cookies associated with a specific URL.
    ses.cookies.get({ url: 'http://www.github.com' }, (error, cookies) => {
        console.log(cookies);
    });

    // Set a cookie with the given cookie data;
    // may overwrite equivalent cookies if they exist.
    const cookie = { url: 'http://www.github.com', name: 'dummy_name', value: 'dummy' };
    ses.cookies.set(cookie, (error) => {
        if (error)
            console.error(error);
    });

当您 运行 应用程序第二次使用此代码时,它应该会显示已设置但没有成功的 cookie 数据。

如果您不提供 Cookie,它们将不会持久存在 expirationDate

let cookie = {
            url: 'http://www.drutas.com',
            name: 'userDetailsGoogle',
            value: JSON.stringify(userDetailsGoogle),
            expirationDate: 2093792393999
        };

如果您给它们expirationDate,cookie 将持续存在