javascript - 使用 Angular + Play 框架 (Java) 进行 SPA 身份验证

标签 javascript java angularjs authentication playframework

我并不真正喜欢身份验证机制,因此我很难弄清楚如何使用 Angular 前端和 Play Framework (Java) 后端设计身份验证机制。基本思想是这样的:

  1. Angular 前端向 Play Framework 身份验证机制发送 REST 身份验证调用。
  2. Play 生成一些 token (将其发送到 Angular)
  3. Angular 可以基于该 token 进行其他 REST 调用

理想情况下,我想使用 CSRF token 。我发现有关集成 Angular 和 Play 身份验证的资料很少,而且没有一个足够完整,无法在我的应用程序上实现它。当然,有很多关于集成 Javascript 和 Play 身份验证的资料,但这是完全不同的情况。

所以我的问题是如何设计它,使用什么框架/功能来使其工作以及如何在该领域集成 Angular 和 Play。实现这一目标的一般步骤就足够了,即:在 Play 中使用该身份验证框架,在 Play 中实现该功能,在 Angular 中使用该方法,以这种方式连接所有内容等。当然,也欢迎更具体的说明。最后一件事,我想将密码哈希存储在数据库中,任何有关如何对其进行哈希处理的提示(任何 Play 机制或其他框架)也会有所帮助。

最佳答案

您可以使用类似 JWT 的内容创建一个 token 并将其提供给您的 Angular 应用程序。基本上流程是这样的:

  • 用户提供身份验证(例如:电子邮件和密码);
  • 您将该信息发送到 Play,以便它可以检查凭据并在一切正常的情况下生成 token 。该 token 可以包含很多信息,例如用户拥有的权限/Angular 色、创建日期等;
  • 获得 token 后,您可以在 Angular 应用程序中使用它。在 Play 端,您必须检查提供的 token 是否有效(它是从您的应用生成的并且尚未过期)

请注意,如果您想实现 token 黑名单或 token 自动续订之类的功能,您可能需要存储这些 token (例如:在数据库中)...

其他选项是为自己生成某种 token (例如:base64 随机字符串)并将其与您可能需要的相关信息(过期日期等)一起存储在数据库中,或者甚至只是在 Play 中设置一个 cookie 并让您的应用使用它(您可能无法直接使用 Angular 中的默认 Play cookie,因为它仅是 HTTP)。

关于密码哈希,您可以使用任何 scala/java 库,但您应该选择安全的库。通常我使用BCrypt ,但还有很多其他选项(scrypt、pbkdf2 等)

关于javascript - 使用 Angular + Play 框架 (Java) 进行 SPA 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38291822/

相关文章:

java - 在weblogic 11 + linux中无法成功导出excel

java - 如何从Java中的多行PreparedStatement中检索所有生成的键?

javascript - 从跟踪代码中删除管道字符?

java - 本地存储的数据库

javascript - 具有不同类型数量的 typescript 接口(interface)

javascript - Angular js,将数据作为参数从 View 传递到 Controller

javascript - 如何在http.put请求中使用路径参数

javascript - Angular JS 条件 CSS 类不起作用

javascript - 使用ajax加载内容并附加

javascript - JQuery 复选框循环