为什么我在scala视图中无法读取自定义标头?

时间:2014-06-14 18:20:25

标签: scala playframework-2.0

在我的Play 2应用程序中,在控制器的方法中,我添加了一个新的标题,如:

def index(id: Option[Long]) = SecuredAction { implicit request =>
....
Ok(views.html.platform.alerts.index(request.user, currentUserAlerts, 
   TweetsDAO.loadTweets(alertId, None, 15)))
        .withHeaders("isAdmin" -> userSettings.get.isAdmin.toString)
}

我想访问alerts.index scala视图中的标题,如:

@request.headers.get("isAdmin")

在我的视图中将请求定义为隐式:

(implicit request: RequestHeader)

但没有显示任何内容。

如果我在scala视图中打印所有标题,则isAdmin不存在。

有人知道我做错了吗?

1 个答案:

答案 0 :(得分:2)

Ok.withHeaders(...)会向返回给用户的Result添加标头,而不是RequestHeader,因此不会传递给视图。

在尝试将RequestHeader等标记传递给视图时,我没有看到尝试修改isAdmin的重点。为什么不在视图中添加一个显式isAdmin: Boolean参数并传递它?这样您就必须明确确定用户是否是管理员,而不是依赖于添加到请求中的标头,这很容易被忽视。