游戏框架中的基本身份验证

时间:2019-07-10 12:08:26

标签: scala websocket playframework

如何使用播放框架为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")
  }

每当身份验证失败时,我就无法将响应作为“未经授权的访问”发送回去,而我最终会遇到异常情况

1 个答案:

答案 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)
    }
  }
}