2016-07-08 16 views
7

Mam na myśli implementację systemu logowania w aplikacji Electron [0], którą buduję, ale utknąłem z powodu obsługi sesji. Zasadniczo chcę przechowywać sesję użytkowników, aby była zachowywana między ponownymi uruchomieniami aplikacji (jeśli włączona jest opcja "Zapamiętaj mnie").Ciasteczka sesyjne nie działające w Electron

Muszę wykorzystać istniejący back-end, który działa z uwierzytelnianiem plików cookie i nie jestem w stanie niczego tam zmienić.

Z dokumentacji Electrona na obiekcie Session [1] ustaliłem, że powinienem używać takiej partycji jak f.e. persist:someName, aby mieć trwałe miejsce do przechowywania, ale nie jest to zachowywane między ponownymi uruchomieniami aplikacji, jak się wydaje.

Sposób, w jaki aktualnie ustawiony plik cookie jest następujący:

// main-process/login.js 

const session = require('electron').session; 

const currentSession = session.fromPartition('persist:someName').cookies; 

currentSession.set({ 
    name: 'myCookie', 
    url: 'https://www.example.com', 
    value: 'loggedin=1', 
    expirationDate: 1531036000 
}, function(error) { 
    console.log('Cookie set'); 
    if (error) { 
     console.dir(error); 
    } 
}); 

Po uruchomieniu to widzę wyjście Cookie set, ale po ponownym uruchomieniu aplikacji i działa następujący kod:

// main.js 

const session = require('electron').session; 

const currentSession = session.fromPartition('persist:someName').cookies; 

currentSession.get({}, function(error, cookies) { 
    console.dir(cookies); 
    if (error) { 
     console.dir(error); 
    } 
}); 

Zwrócone dane wyjściowe to [].

Wszelkie wskazówki dotyczące tego, co robię źle lub muszę robić inaczej, byłyby wysoko cenione!

[0] http://electron.atom.io
[1] http://electron.atom.io/docs/api/session/

+2

Po przeanalizowaniu tego problemu, wydaje się, że może to być problem z wydaniami Electron po 1.2.2, jak wskazano w tym wątku na GitHub: https://github.com/electron/electron/issues/6388 – Revell

+0

1 .: Sprawdź import, wyobrażam sobie, że "require ('electron')" może powodować pewne problemy 2 .: Zamiast tego możesz wypróbować interfejs API localStorage –

+0

@JensHabegger Tak, to jest literówka w scenariuszu, przepraszam W międzyczasie okazało się, że jest to problem w firmie Electron i czekam na nowe wydanie z poprawką, która będzie dostępna. – Revell

Odpowiedz

0

Alternatywą może być przyjrzeć electron-json-storage. Korzystając z tej wtyczki, możesz napisać JSON do pliku systemowego przez cały czas doświadczenia użytkownika, a następnie przywołać ten plik w aplikacji, aby zastąpić "stan" użytkownika.