如何将授权中间件(例如登录用户)的信息公开给使用Aqueduct的后续请求控制器?
例如我的路线是:
.route('/events/[:id]')
.link(() => SecretKeyAuthorizer(context))
.link(() => EventsController(context));
并且SecretKeyAuthorizer使用标头来查找当前用户。我想在EventsController中使用来自User的信息。
经过长时间的搜索,我终于找到了答案。可以在请求对象中使用附件作为字典,并在其生命周期内保存。通常Authorizer会这样做:
request.attachments["user"] = user;
并且后续的resourceconcontroller可以使用它:
User user = request.attachments["user"] as User;
注意,请求是controller的成员。