如何使用播放框架为Web套接字实现基本身份验证。
我正在使用播放框架创建Web套接字。 我想进行基本身份验证,如果身份验证失败,则发送401。 以下是我的代码,我无法发送“ {code = 401,message = unauthorized access}”作为回复
def ChatServer(): WebSocket = WebSocket.accept[String, String] { request =>
if (Util.doBasicAuthentication(request.headers)) {
ActorFlow.actorRef { out =>
ChatActor.props(out)
}
} else throw new RuntimeException("Unauthorized Access")
}
每当身份验证失败时,我就无法将响应作为“未经授权的访问”发送回去,而我最终会遇到异常情况
答案 0 :(得分:0)
如Play documentation中所述,请使用WebSocket.acceptOrResult
:
def socket = WebSocket.acceptOrResult[String, String] { request =>
Future.successful {
if (Util.doBasicAuthentication(request.headers)) {
Right(ActorFlow.actorRef { out =>
ChatActor.props(out)
})
} else {
Left(Unauthorized)
}
}
}