【发布时间】:2014-09-29 02:57:56
【问题描述】:
我从前端向 userPrivateProfile 控制器拨打电话。路由是 /api/user/private/:id 所以假设我在 /api/user/ 拨打电话私人/65。在我执行控制器之前,请求被 SecurityAuthAction 接收,我确保请求标头具有令牌,如果是这种情况,我想将 :id 更改为不同的东西。
Controller.java
@With(SecurityAuthAction.class)
public Result userPrivateProfile(Long id) {
//LOGIC
}
SecurityAuthAction.java
public Promise<SimpleResult> call(Http.Context ctx) throws Throwable {
String[] authTokenHeaderValues = ctx.request().headers()
.get(AUTH_TOKEN_HEADER);
if ((authTokenHeaderValues != null) && (authTokenHeaderValues.length == 1) && (authTokenHeaderValues[0] != null)) {
Long userId = sessionService
.findUserByToken(authTokenHeaderValues[0]);
ctx.args.put("id",userId.toString());
return delegate.call(ctx);
}
我的问题是
-
我无法检索使用 ctx 从原始调用中指定的 :id
-
由于我找不到请求参数在哪里,我也无法更改它
我尝试遍历 ctx.args 映射,但在那里没有找到任何东西。输出是:
ROUTE_VERB ROUTE_
ACTION_METHOD
ROUTE_CONTROLLER
ROUTE_COMMENTS
ROUTE_PATTERN
获取
userPrivateProfile
控制器.控制器
/api/user/private/$id
感谢您的帮助:)
【问题讨论】:
标签: java http playframework playframework-2.0 playframework-2.1