从 Aqueduct 中的中间件获取用户

Get user from the middleware in Aqueduct

如何使用 Aqueduct 将来自授权中间件(例如 logged-in 用户)的信息公开给后续请求控制器?

例如我的路线是:

.route('/events/[:id]')
.link(() => SecretKeyAuthorizer(context))
.link(() => EventsController(context));

并且 SecretKeyAuthorizer 使用 header 来查找当前用户。我想在 EventsController 中使用来自用户的信息。

经过长时间的搜索,我终于找到了答案。可以在请求对象中为此目的使用作为字典的附件,并在其生命周期内保留。所以通常授权者会做类似的事情:

  request.attachments["user"] = user;

随后的 RessourceControllers 可以与它​​一起使用:

  User user = request.attachments["user"] as User;

注意 request 是“控制器”class 的成员,因此可以通过继承直接访问。