7

Scala で Play Framework 2 を使用してアプリケーションを構築しています。これは純粋に RESTful であり、現時点では Javascript のシングル ページ アプリケーションから呼び出しが行われます。

トークンベースの認証を統合する最良の方法は何ですか? Play2 には複数の認証ライブラリと rawSecuredトレイトがありますが、どれが最も便利かは明らかではありません。

あなたの助けとあなたの提案に感謝します

4

2 に答える 2

6

「トークンベース」と言うときに JWT を参照する場合は、Play2 で HTTP 基本認証を実装するこの例と、Scala バックエンドで JWT を実装する方法に関するこの回答をご覧になることをお勧めします。良い点は、Cookie も、認証されたユーザーのキャッシュも必要ないことです。

便宜上、最初のリンクのコンテンツを含めます。

def Secured[A](username: String, password: String)(action: Action[A]) = Action(action.parser) { request =>
  request.headers.get("Authorization").flatMap { authorization =>
    authorization.split(" ").drop(1).headOption.filter { encoded =>
      new String(org.apache.commons.codec.binary.Base64.decodeBase64(encoded.getBytes)).split(":").toList match {
        case u :: p :: Nil if u == username && password == p => true
        case _ => false
      }
    }.map(_ => action(request))
  }.getOrElse {
    Unauthorized.withHeaders("WWW-Authenticate" -> """Basic realm="Secured"""")
  }
}

次のように使用します。

def myAction = Secured("admin", "1234secret") {
  Action { request =>
    Ok
  }
}
于 2014-04-21T08:06:12.553 に答える