我的代码如下: https://gist.github.com/daaatz/7665224
但不知道如何测试请求。 尝试mydomain / secured?user = John& password = p4ssw0rd等但没有任何作用。
有人可以告诉我或在js + html中显示示例如何检查它是否正常工作?
由于
答案 0 :(得分:4)
我从未在Spray中使用过BasicAuth,所以我不确定这是否是完整的答案,但我希望这会对你有帮助。
起初。在喷涂中,在akka testkit之上写了一个很棒的spray-testkit。您绝对应该在github上查看SecurityDirectives
测试,这将向您展示如何测试基本身份验证。一个小例子,使这更简单:
至于你的路线示例,我最好编辑到以下一个:
val myRoute =
(path("secured") & get) {
authenticate(BasicAuth(myUserPassAuthenticator _, realm = "secure site")) {
userName => complete(s"The user is '$userName'")
}
}
}
添加get
指令将指定此路由需要Get
请求且sealRoute
已过时,RejectionHandler
和ExceptionHandler
隐式提供{{1} }}。如果你想检查异常/拒绝,它仅用于测试。
现在在测试中你应该构建auth实体,类似于测试实体:
runRoute
你测试案例:
val challenge = `WWW-Authenticate`(HttpChallenge("Basic", "Realm"))
val doAuth = BasicAuth(UserPassAuthenticator[BasicUserContext] { userPassOption ⇒
Future.successful(Some(BasicUserContext(userPassOption.get.user)))
}, "Realm")
在"simple auth test" in {
Get("security") ~> Authorization(BasicHttpCredentials("Alice", "")) ~> {
authenticate(doAuth) { echoComplete }
} ~> check { responseAs[String] === "BasicUserContext(Alice)" }
}
中指定您的测试会在“/ security”上发送Get("security")
请求,然后将Get
添加到测试请求,某些操作和Authorization
部分测试请求。
我从未尝试过测试BasicAuth,因此可能会出现一些错误。
答案 1 :(得分:0)
我会研究CURL来测试Web应用程序中的路由,但我也使用了chrome扩展Postman,但也有很好的结果。