Scala / Play http身份验证问题 - 从请求中获取用户名和密码

时间:2014-02-28 13:00:12

标签: scala http authentication playframework playframework-2.0

我正在使用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("")

}

我在控制台中收到“发送用户名和密码”,没有其他任何事情发生。我做错了什么,如何从请求中获取用户名和密码?

1 个答案:

答案 0 :(得分:1)

您的代码运行正常,问题出在您使用的浏览器插件中。不知何故,它不适用于基本身份验证,因为如果你添加一个println(request.headers)调用作为你的动作体的第一行你可以看到它不在那里,而如果你使用curl它就在那里!

我在给定的代码中使用了以下commind:

curl --user name:password http://localhost:9000/test

,结果是:

Basic bmFtZTpwYXNzd29yZA==

所以它有效!