加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 使用Play 2 Framework进行基于令牌的身份验证

发布时间:2020-12-16 19:21:52 所属栏目:安全 来源:网络整理
导读:我在 Scala中使用Play Framework 2建立一个应用程序.它将完全是RESTful,目前从 Javascript单页面应用程序调用. 什么是集成基于令牌的身份验证的最佳方式? Play2有多个认证库,加上原始的安全特性,但不清楚哪个是最方便的. 感谢您的帮助和建议 解决方法 如果
我在 Scala中使用Play Framework 2建立一个应用程序.它将完全是RESTful,目前从 Javascript单页面应用程序调用.

什么是集成基于令牌的身份验证的最佳方式? Play2有多个认证库,加上原始的安全特性,但不清楚哪个是最方便的.

感谢您的帮助和建议

解决方法

如果您在说“基于令牌”时引用JWT,您可能需要查看 this example在Play2中实现HTTP基本身份验证,以及 this answer:如何在Scala后端实现JWT.好的部分是您既不需要cookie,也不需要经过身份验证的用户的缓存.

为方便起见,包括第一个链接的内容:

def Secured[A](username: String,password: String)(action: Action[A]) = Action(action.parser) { request =>
  request.headers.get("Authorization").flatMap { authorization =>
    authorization.split(" ").drop(1).headOption.filter { encoded =>
      new String(org.apache.commons.codec.binary.Base64.decodeBase64(encoded.getBytes)).split(":").toList match {
        case u :: p :: Nil if u == username && password == p => true
        case _ => false
      }
    }.map(_ => action(request))
  }.getOrElse {
    Unauthorized.withHeaders("WWW-Authenticate" -> """Basic realm="Secured"""")
  }
}

使用方法如下:

def myAction = Secured("admin","1234secret") {
  Action { request =>
    Ok
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读