从Aqueduct的中间件中获取用户



如何将授权中间件(例如登录用户)的信息公开给使用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的成员。

最新更新