【发布时间】:2014-02-28 22:35:50
【问题描述】:
我正在使用 Firefox“REST Easy”插件在我的 Play 应用程序中测试 HTTP 身份验证。这是请求 URL 在 Firebug 中的样子:
http://username:password@localhost:9001/test
我的 Play 控制器中的方法如下所示:
def test = Action { implicit request =>
request.headers.get("Authorization") match {
case Some(header) => println(header)
case None => {
println("send user name and password")
Unauthorized.withHeaders("WWW-Authenticate" -> "Basic realm=\"myrealm\"")
}
}
Ok("")
}
我在控制台中收到“发送用户名和密码”,但没有其他任何反应。我做错了什么,如何从请求中获取用户名和密码?
【问题讨论】:
-
你检查标题了吗?您阅读了 Authorization 标头 - 不是 http 参数。
-
@ajozwik 你是什么意思?我虽然基本的 HTTP 身份验证 - 用户名和密码 - 是在标头中传递的,不是吗?
-
看起来您需要选择“身份验证”选项卡并在那里输入用户名/密码。就像 RedmarKerkhoff 的 curl 回答一样,应该将其转换为正确的基本授权标头。如果是插件的问题,我可以验证 FF 插件 RESTClient 的基本授权确实构造了正确的标头(针对 Scalatra 进行了测试)。
-
LOL 在端口号。
标签: scala http authentication playframework playframework-2.0