通常,dart文档在几乎任何主题上都有很多有用的示例。不幸的是,在dart的会话中找不到任何东西。
任何人都可以将此方法验证为正确的会话方式:
我特别感兴趣的是第4点,第5点和第6点,因为其他记录很好。如果您可以在这一点上分享一些代码片段,我将非常感激。
编辑: 在阅读GünterZöchbauer的评论后,我查看了shelf_auth。我意识到它需要重写服务器应用程序以使用货架。 所以我做到了。
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));
}
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
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');
}
不幸的是,在阅读shelf_auth文档后,我仍然不知道在哪里添加身份验证。他们使用Pipline语法处理程序。
答案 0 :(得分:2)
我将用 servlets 描述Java中的会话是如何工作的。这可以帮助您实现您的实施。首先,我必须提到会话和身份验证是两个独立的功能,虽然后者依赖于前者。
会话有助于服务器了解来自同一浏览器的连续请求,而两者之间没有大的空闲时间。看看下面的例子:
以下是用户上述步骤对服务器端会话的影响:
服务器端的会话使用:
实施细节:
身份验证机制只是利用上面的会话处理来检测“新会话”并将它们转移到登录页面。此外,现有会话可用于存储“auth-status” - “pass”或“fail”等属性。