SinF的Electron系列之一---Cookie和localStorage

Electron不支持以前在瀏覽器中使用localstroage的方法,暫時採用cookie解決。api

  • 需Electron默認的cookie是保存在主流程裏面,因此須要使用remote模塊提取
  • getcookie的函數,我改寫成了promise(),用參考博客裏面的方法,沒法得到cookie的返回值。

官方文檔promise

https://electronjs.org/docs/a...

參考博客瀏覽器

https://blog.csdn.net/changhu...
使用
const Cookie = require('./static/js/cookie.js')

Cookie.getCookies('token').then(function (res) {
    console.log('res', res)
})
cookie.js代碼
// cookie.js

// 經過remote模塊取的本來在主進程中才能使用的session模塊
const session = require('electron').remote.session;
/**
 * 得到
 */
const Cookie = {}
const Session = session
Cookie.getCookies = (name) => {
    let data = []
    return new Promise(function (resolve, reject) {
        Session.defaultSession.cookies.get({ name:name}, function (error, cookies) {
            console.log('cookies', cookies);
            if (cookies.length > 0) {
                data = cookies
            }
            resolve(cookies)
        })
    })

};
/**
 * 清空緩存
 */
Cookie.clearCookies = (url) => {
    Session.defaultSession.clearStorageData({
        origin: url,
        storages: ['cookies']
    }, function (error) {
        if (error) console.error(error);
    })
};

/**
 * 保存cookie
 * @param name  cookie名稱
 * @param value cookie值
 */
Cookie.setCookie = (name, value) => {
    let Days = 30;
    let exp = new Date();
    let date = Math.round(exp.getTime() / 1000) + Days * 24 * 60 * 60;
    const cookie = {
        url: "",
        name: name,
        value: value,
        expirationDate: date
    };
    Session.defaultSession.cookies.set(cookie, (error) => {
        if (error) console.error(error);
    });
};

// export default cookie
module.exports = Cookie
相關文章
相關標籤/搜索