从 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 的成员,因此可以通过继承直接访问。
如何使用 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 的成员,因此可以通过继承直接访问。