【问题标题】:Basic Authentication in play framework播放框架中的基本身份验证
【发布时间】:2019-07-10 12:08:26
【问题描述】:

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

每当身份验证失败时,我都无法将响应作为“未经授权的访问”发回,而是以异常结束

【问题讨论】:

    标签: scala websocket playframework


    【解决方案1】:

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

    【讨论】:

    • @Jeffry Chung 谢谢。它有效,但有什么方法可以发送字符串作为响应?
    • 是的,只需将字符串作为 argumnet 发送,例如 Unauthorized("msg"),请注意此流程仍然接受立即结束的 Web 套接字连接。
    猜你喜欢
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 2014-01-31
    • 2013-11-10
    • 1970-01-01
    相关资源
    最近更新 更多