繁体   English   中英

使用Angular + Play Framework(Java)进行SPA身份验证

[英]SPA authentication with Angular + Play Framework (Java)

我并没有真正进入身份验证机制,因此我无法弄清楚如何使用Angular前端和Play Framework(Java)后端设计身份验证机制。 基本的想法是这样的:

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

理想情况下,我想使用CSRF令牌。 我发现很少有关于集成Angular和Play身份验证的消息来源,但它们都不够完整,无法在我的应用程序上实现它。 当然,有许多关于集成Javascript和Play身份验证的来源,但这是完全不同的情况。

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

您可以使用JWT之类的东西来创建令牌并将其提供给您的角度应用程序。 基本上流程将是这样的:

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

请注意,如果要实现令牌黑名单或令牌的自动续订等内容,您可能希望存储这些令牌(例如:在数据库中)...

其他选项是生成自己的某种令牌(例如:base64随机字符串)并将其存储在数据库中,其中包含您可能需要的相关信息(到期日期等),甚至只需在Play中设置cookie并让您的应用使用它(你可能不能直接使用Angular中的默认Play cookie,因为它只是HTTP)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM