寻找有关如何使用akka HTTP进行身份验证的良好解释.给出一条看起来像的路线
val route =
path("account") {
authenticateBasic(realm = "some realm", myAuthenticator) { user =>
get {
encodeResponseWith(Deflate) {
complete {
//do something here
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
文档概述了一种方法,但是省略了执行实际认证的相关部分......
// backend entry points
def myAuthenticator: Authenticator[User] = ???
Run Code Online (Sandbox Code Playgroud)
我在哪里可以找到这种验证器的示例实现?我已经有了用于在给定用户名和密码的情况下对用户进行身份验证的逻辑,但我无法弄清楚如何从HTTP请求(或RequestContext)获取用户名/密码(或包含两者的令牌).
我有代码片段
cursor.downField("params").downField("playlist").downField("items").as[List[Clip]]
Run Code Online (Sandbox Code Playgroud)
Clip是一个简单的字符串和数字类.传入的Json应该包含一个json对象"播放列表",其中包含一个"项目"数组,其中每个项目都是一个剪辑.所以json看起来应该是这样的
{
"playlist": {
"name": "Sample Playlist",
"items": [
{
"clipId":"xyz",
"name":"abc"
},
{
"clipId":"pqr",
"name":"def"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码片段,我收到编译错误:
Error:(147, 81) could not find implicit value for parameter d:
io.circe.Decoder[List[com.packagename.model.Clip]]
cursor.downField("params").downField("playlist").downField("items").as[List[Clip]]
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如何使用circe为简单项目的列表/数组设置解码?