Czy istnieje sposób kontrolowania, kiedy sesja rozpoczyna się od oprogramowania pośredniego sesji klienta?Sesja kontrolowania Rozpocznij od wyrażenia i połącz oprogramowanie pośrednie
Na przykład, jeśli mam wyraźnej app config:
var app = express();
app.configure(function(){
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('secret'));
app.use(express.session({ store:sessionStore, ... }));
});
Następnie na każdy żądania, jeśli nie jest podana cookie sesji, sesja jest uruchomiony. Co się stanie, jeśli chcę rozpocząć sesję tylko wtedy, gdy użytkownik zostanie uwierzytelniony?
Załóżmy na przykład, że mam dwie trasy /protected
i /login
.
- Jeśli ktoś uderza
/protected
bez pliku cookie sesji, middleware będzie NIE rozpocząć nową sesję. (req.session
jestnull
) - Jeśli ktoś uderza
/protected
z pliku cookie sesji, middleware będzie KONTROLA, aby zobaczyć, czy jest aktywna sesja dopasowywania do cookie i ustawreq.session
, ale nie rozpocząć nową sesję. (req.session
może mieć wartość lub byćnull
) - Jeśli ktoś uderza
/login
z poprawnymi params, potem sesja rozpoczęła wyraźnie i plik cookie jest ustawiony tylko wtedy.
Jedynym sposobem, aby rozpocząć sesję powinny być wyraźnie:
app.post('/login', function(req, res, next) {
// connect to database and validate user...
db.authenticate(req.body.user, req.body.pass, function(allow) {
if (allow) {
// START SESSION HERE
// this will send set the cookie
}
});
}
Czy istnieje sposób osiągnięcia tego z istniejącym połączyć middleware sesji?
Jeśli używasz magazynu sesji bazy danych zaplecza, a następnie * co * anonimowy użytkownik będzie tworzyć sesje przechowywane w bazie danych. – ralouphie
Rozumiem, że jednak nie powinieneś tak czy inaczej przechowywać danych sesji na zawsze. Po wygaśnięciu danych sesji należy je usunąć, a jeśli anonimowy użytkownik odwiedza tylko kilka stron w witrynie, powinien zostać usunięty raczej szybko po ich opuszczeniu. Poza tym sesje dla anonimowych użytkowników będą zasadniczo pustymi obiektami (popraw mnie, jeśli się mylę), a zatem nie powinny być wielkim obciążeniem pamięci. –
Sposób działania oprogramowania pośredniego sesji spowoduje utworzenie sesji dla każdego użytkownika bez niego (bez pliku cookie). Oznacza to, że baza danych będzie miała wpis dla każdego żądania, które nie wysyła pliku cookie.W systemie, nad którym pracuję, jest to niedopuszczalne. – ralouphie