【问题标题】:secure social websockets play framework安全的社交 websockets 播放框架
【发布时间】:2014-04-19 06:45:55
【问题描述】:

如何使用 scala securesocial 在 play 框架中保护 websocket 调用?

def statusfeed() = WebSocket.using[String] { implicit request =>
    if (logged in) {
      ...
    else {
    }
}

谢谢,

编辑 1:

试过了但没用,总是“未登录”

def statusfeed() = WebSocket.using[String] { implicit request =>
  var in = Iteratee.ignore[String]
  var out = Enumerator.empty[String]
  session.get("userId").map { sessionId =>
      //sessionId is now userId in session
      //check he is authorise to view page or not   
      //  Ok("user in session")
      def getLoadAverage = {
          "%1.2f" format
            ManagementFactory.getOperatingSystemMXBean.getSystemLoadAverage()
      }

      in = Iteratee.ignore[String]
      out = Enumerator.repeatM {
          Promise.timeout(getLoadAverage, 3 seconds)
      }

  }.getOrElse {
      log.info("not logged in")
      //any thing that you want when he is not in session
      Redirect("/") //NOT IN SESSION REDIRECT TO LOGIN PAGE
  }
  (in, out)
}

编辑 2: 用 SecureSocial.USER_KEY 替换 userId 也不起作用

【问题讨论】:

    标签: scala playframework securestring


    【解决方案1】:

    这可行,但不是惯用的scala

    def getUser(req: RequestHeader):String = {
      val authenticator = SecureSocial.authenticatorFromRequest(req)
      if (authenticator.isEmpty) {
        return null
      } 
      val auth = UserService.find(authenticator.get.identityId)
      auth.get.identityId.userId
    }
    
    def statusfeed() = WebSocket.using[String] { implicit request =>
        implicit val req = request
        val user = getUser(req)
    

    ....

    然后测试用户!= null


    或者更简单

    def statusfeed() = WebSocket.using[String] { implicit request =>
      SecureSocial.currentUser(request) match {
        case Some(userid) => ... success
        case None => ... failed
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-17
      • 1970-01-01
      • 2016-07-10
      • 2012-05-20
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多