我正在使用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("")
}
我在控制台中收到“发送用户名和密码”,没有其他任何事情发生。我做错了什么,如何从请求中获取用户名和密码?
答案 0 :(得分:1)
您的代码运行正常,问题出在您使用的浏览器插件中。不知何故,它不适用于基本身份验证,因为如果你添加一个println(request.headers)调用作为你的动作体的第一行你可以看到它不在那里,而如果你使用curl它就在那里!
我在给定的代码中使用了以下commind:
curl --user name:password http://localhost:9000/test
,结果是:
Basic bmFtZTpwYXNzd29yZA==
所以它有效!