Di solito la documentazione del dardo ha molti esempi utili su quasi tutti gli argomenti. Purtroppo non ho trovato nulla nelle sessioni in dardo.Sessioni in freccetta
si poteva convalidare questo approccio come un modo corretto di fare le sessioni:
- browser invia GET richiesta di recidere.
- Il server risponde con il web-client.
- Il client Web invia le credenziali dell'utente.
- a) Il server verifica le credenziali e genera il cookie di sessione. b) Il server invia di nuovo il cookie di sessione al client.
- Il client Web memorizza i cookie per un ulteriore utilizzo.
- Il client Web invia la richiesta di alcuni dati specifici dell'utente e allega il cookie per la verifica.
Il mio interesse particolare è nei punti 4, 5 e 6, poiché gli altri sono ben documentati. Se potessi condividere alcuni snippet di codice su questi punti, lo apprezzerei molto.
MODIFICA: Dopo aver letto il commento di Günter Zöchbauer in basso ho cercato su shelf_auth. Mi sono reso conto che è necessario riscrivere l'app del server per utilizzare lo scaffale. Quindi l'ho fatto.
Il main.dart:
// imports of all necessary libraries
main() {
runServer();
}
/**
* Code to handle Http Requests
*/
runServer() {
var staticHandler = createStaticHandler(r"C:\Users\Lukasz\dart\auctionProject\web", defaultDocument: 'auctionproject.html');
var handler = new Cascade()
.add(staticHandler) // serves web-client
.add(routes.handler) // serves content requested by web-client
.handler;
io.serve(handler, InternetAddress.LOOPBACK_IP_V4, 8080).then((server) {
print('Listening on port 8080');
}).catchError((error) => print(error));
}
Il routes.dart
import 'handlers.dart' as handler;
import 'package:shelf_route/shelf_route.dart';
import 'package:shelf_auth/shelf_auth.dart' as sAuth;
Router routes = new Router()
..get('/anonymous', handler.handleAnonymousRequest);
//..post('/login', handler.handleLoginRequest); << this needs to be implemented
//other routs will come later
Il handlers.dart
import 'dart:async';
import 'dart:convert';
import 'dart:io' show HttpHeaders;
import 'databaseUtility.dart';
import 'package:shelf_exception_response/exception.dart';
import 'package:shelf/shelf.dart' as shelf;
import 'package:shelf_path/shelf_path.dart';
shelf.Response handleAnonymousRequest(shelf.Request request) {
return new shelf.Response.ok('got anonymous get request');
}
Purtroppo dopo aver letto la documentazione shelf_auth io ancora non del tutto sapere dove aggiungere l'autenticazione. Usano la sintassi Pipline per il gestore.
Io uso il gestore di sessione di https://pub.dartlang.org/packages/shelf_auth per questo scopo. –
@ GünterZöchbauer potrebbe per favore dare un'occhiata al codice sopra. – Lukasz
Non avrò tempo oggi, forse domani ... –