在Electron中,默认会话是持久的吗?

时间:2016-08-24 17:22:56

标签: session cookies electron

我正在使用Electron(v1.2.7),我需要会话cookie在应用重启之间持续存在(用于身份验证)。

有可能吗?我知道在Chrome中设置"继续你离开的地方",会话被保留但不确定它是否在Electron中工作相同。

作为一种解决方法,我尝试将会话cookie也存储为非会话cookie,但它因一般错误而失败。

澄清:我没有在身份验证期间设置由其他网页设置的会话Cookie。

3 个答案:

答案 0 :(得分:3)

默认会话是持久性的,但如果您使用session.defaultSession.cookies.set()设置Cookie,则必须设置过期日期,以便保留Cookie。

答案 1 :(得分:2)

您可以保留Cookie设置sessionexpirationDate

这个例子是在Angularjs上做的

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

this.put = function (data, name) {
        var expiration = new Date();
        var hour = expiration.getHours();
        hour = hour + 6;
        expiration.setHours(hour);
        ses.cookies.set({
            url: BaseURL,
            name: name,
            value: data,
            session: true,
            expirationDate: expiration.getTime()
        }, function (error) {
            /*console.log(error);*/
        });
    };
PD:我遇到的一个问题是,如果我没有坚持下去,在几次重新加载后我的cookie就会丢失。所以在这个例子中我会坚持6个小时

答案 2 :(得分:0)

如果您要加载外部网页,则应使用电子<webview> tag来禁用节点集成以及其他安全原因。使用网页视图可以轻松访问Partition attribute,可以将其设置为保留(例如:persist:mypage)。如果需要,您还可以在Electron窗口上设置分区属性。