すべてのリクエストで YMD uri 日付パラメーターの存在を確認する必要があります。存在する場合は、アプリケーションのさまざまな部分で後でアクセスできるように、暗黙のリクエストが利用可能になっている場所にそれを保存します。
リクエストの傍受は当然の選択のようです: https://github.com/playframework/Play20/wiki/ScalaInterceptors
ただし、リクエストに追加する方法がわかりません(実際にRequestHeader
は利用可能なものです)。読み取り専用/不変であると仮定します。
Action Compositionを介して Request にデータを追加できます。ただし、このアプローチは構成されたアクションに限定されており、すべてのアクションではありません (なぜ、上記のグローバルなインターセプター前のアプローチが何らかの形で機能することを望むのですか)。たとえば、Authentiucated アクション ラッパーを使用すると、ログインしているユーザーの ID をリクエストに格納できます。
trait Secured {
private case class Success[A](uid: Int, r: Request[A]) extends WrappedRequest(r)
def Authenticated[A](p: BodyParser[A])
(f: Success[A] => Result)(implicit group: RoleGroup) = {
def apply(maybeUser: Option[String])(implicit r: Request[A]) = {
maybeUser map {id =>
Cache.orElse(group.to_s+"-"+id, 3600){
repo.user.get(id.int, group) map(_.active) getOrElse false
} fold ( onFail, f(Success(id.int, r)) )
}
}
可能性のある uri 日付パラメーターについても同じことを行いたいのですが、それをすべてのアクションに適用するか、グローバル インターセプターを介して Play ルート メカニズムがトリガーされる前に適用する必要があります。
アイデアは大歓迎です、ありがとう