Chcę wykonać sesję obsługi stron internetowych za pośrednictwem node.js i socket.io bez konieczności korzystania z plików cookie i unikania pliku express.js, ponieważ nie powinno być również klientów nie działających w środowisku przeglądarki. Ktoś już to zrobił lub ma jakieś doświadczenie z dowodem koncepcji?Socket.io sesja bez pliku express.js?
Odpowiedz
Powinno to być pomocne, https://github.com/LearnBoost/socket.io/wiki/Authorizing
Można śledzić wszystkie zmienne sesyjne i jednoznacznej identyfikacji użytkowników za pomocą kombinacji następujących dostępny w handshakeData
{
headers: req.headers // <Object> the headers of the request
, time: (new Date) +'' // <String> date time of the connection
, address: socket.address() // <Object> remoteAddress and remotePort object
, xdomain: !!headers.origin // <Boolean> was it a cross domain request?
, secure: socket.secure // <Boolean> https connection
, issued: +date // <Number> EPOCH of when the handshake was created
, url: request.url // <String> the entrance path of the request
, query: data.query // <Object> the result of url.parse().query or a empty object
}
Ten przykład może pomóc także Po prostu poproś klientów spoza przeglądarki o podanie informacji w inny sposób:
Dobrze, jeśli mogę dodać sessionid do req.headers na stronie klienta i potwierdzić to w autoryzacji. Dlatego muszę napisać samodzielny seserhandler oddzielony od req i res vars. Może mógłbym użyć sesji połączenia jako bazy kodowej, aby była kompatybilna ze sklepami sesyjnymi i innymi rzeczami. Czy wiesz, w jaki sposób mogę dodać wartości do nagłówka po stronie klienta? Kiedy moje połączenie z websocket jest autoryzowane, czy jest ono tak samo bezpieczne, jak pojedyncze żądanie http sprawdzające jego sesję przez cały czas? –
Przed ustanowieniem połączenia socket.io jest mechanizm handshake, domyślnie wszystkie poprawnie przychodzące żądania pomyślnie podają sobie ręce. Istnieje jednak metoda uzyskiwania danych gniazda podczas uzgadniania i zwracania wartości true lub false w zależności od tego, który z nich jest akceptowany lub odmawia przyjęcia żądania połączenia. Oto przykład z pliku socket.io:
Ponieważ dane handshakeData są przechowywane po autoryzacji, można faktycznie dodawać lub usuwać dane z tego obiektu.
var io = require('socket.io').listen(80);
io.configure(function(){
io.set('authorization', function (handshakeData, callback) {
// findDatabyip is an async example function
findDatabyIP(handshakeData.address.address, function (err, data) {
if (err) return callback(err);
if (data.authorized) {
handshakeData.foo = 'bar';
for(var prop in data) handshakeData[prop] = data[prop];
callback(null, true);
} else {
callback(null, false);
}
})
});
});
Pierwszym argumentem zwrotnego funkcja jest błąd, można podać tu ciąg, który będzie automatycznie odmówić klientowi, jeśli nie jest ustawiona na null. Drugi argument to boolean, niezależnie od tego, czy chcesz przyjąć przychodzące żądanie, czy nie.
- 1. połączenie sesji socket.io i express.js
- 2. jak zainstalować starą wersję pliku express.js
- 3. Express.js res.render nazwa pliku kropki
- 4. Przekierowanie do pliku statycznego w pliku express.js
- 5. Sesja Node.JS bez plików cookie
- 6. Sesje z express.js + passport.js
- 7. Gdzie umieścić wspólne funkcje w pliku express.js?
- 8. Zakres funkcji oprogramowania pośredniego w pliku express.js
- 9. W pliku express.js plik req.files jest niezdefiniowany.
- 10. W Express.js, jak mogę renderować częściowy widok Jade bez obiektu "response"?
- 11. węzeł js gniazda sieciowe + websocket bez socket.io
- 12. Projektowanie aplikacji internetowych: sesja lub sesja mniej
- 13. Sesja ASP.MVC utracona podczas pobierania pliku
- 14. Załaduj ponownie trasy Express.js do zmian bez restartowania serwera
- 15. Jak włączyć CORS w pliku express.js 4.x dla wszystkich plików?
- 16. Korzystanie z pliku socket.io z klastrem?
- 17. Czy serwer Foxx/ArangoDB obsługuje Socket.IO?
- 18. Uruchamianie pliku node.js bez dzienników automatycznych
- 19. socket.io konfiguracja
- 20. Socket.io redisstore
- 21. Jak uzyskać dostęp do obiektu ejs w pliku express.js
- 22. Moduł Express.js hbs - zarejestruj partials z pliku .hbs
- 23. Morgan Logger + Express.js: zapis pliku i wyświetlenie w konsoli
- 24. Zobacz wszystkie aktualnie aktywne sesje w pliku express.js
- 25. Jak uzyskać domenę, z której pochodzi żądanie w pliku express.js?
- 26. Przekierowanie Express.js do HTTPS i wysłanie pliku index.html
- 27. Różnica między app.use a app.get w pliku express.js
- 28. Zmiana nazwy przesłanego pliku za pomocą Multera nie działa (Express.js)
- 29. Jak mogę uzyskać język przeglądarki w pliku node.js (express.js)?
- 30. Jak umieścić oprogramowanie pośrednie w swoim pliku w Node.js/Express.js
Przykłady na stronie http://socket.io/ nie używają wyrażenia, ale domyślam się, że już to wiesz. Jakie dodatkowe informacje są potrzebne? –