【问题标题】:Remember Users & Forgot Password Functionality in Laravel 5.1 and Angular JS (JWT Authentication)Laravel 5.1 和 Angular JS(JWT 身份验证)中的记住用户和忘记密码功能
【发布时间】:2015-12-23 08:18:02
【问题描述】:

我正在使用 laravel 5 和 angular js 和 JWT 身份验证来记录和注册我的用户。但并没有提及如何方便用户记住我的功能,并允许用户在忘记密码时重置密码。

我进行了很多研究,但没有找到我真正需要的东西,尽管下面链接中的答案很有帮助,但不足以让我继续。 Laravel 5 Password Reset with Angular View

请提供任何有用的信息和链接。 提前致谢! :)

【问题讨论】:

  • Password Rests 种类繁多,您能否更具体一点,您所链接的问题有哪些不足之处,因此我们可以更具体,但没有答案。

标签: angularjs laravel jwt remember-me forgot-password


【解决方案1】:

从智威汤逊的角度回答。

记住我本质上是在询问用户他们想登录多长时间。根据用户的安全要求和典型使用模式,短会话通常从 15 分钟到浏览器会话。长时间的会议(选择记住我)可以是 24 小时到一年的任何时间。

JWT 颁发者可以根据用户对“记住我”复选框的选择来设置不同的 exp 声明(令牌的过期时间)。

如果您希望“记住我”的持续时间超过单个浏览器会话,最简单的方法是将令牌存储在 cookie 中。这意味着 cookie 还需要设置以下属性:httponly、secure 和 expires(与令牌中的 exp 声明的到期时间相同)。

Rest Password 实现有多种形状和大小,具体取决于您的要求。这些与 JWT 没有直接关系,因为它们在 JWT 发行者发行令牌之前出现。

【讨论】:

  • 感谢@Alex 的回复。
【解决方案2】:

您要求的是需要专门针对您的案件进行处理的内容。大多数“记住我”系统(包括 Laravel)的工作方式是通过在用户设备上存储 cookie。然后,该 cookie 用于在用户返回时自动进行身份验证。 JWT 是不同的,因为您获得了一个令牌,而不是一个 cookie,您在标头中将其传递回服务器。它们本质上都是字母和数字的字符串,但您必须特别将 JWT 令牌存储在用户的浏览器中才能获得“记住我”类型的功能。您可以在 Angular 应用程序中使用 localStorage 或其他类似的前端实践来执行此操作。

对于忘记的密码,你可以提交与 Laravel 默认相同的表单字段,并简单地覆盖 PasswordController 如何返回响应;在这种情况下需要 JSON 响应而不是重定向。

【讨论】:

  • 感谢@Adam 的回复
猜你喜欢
  • 2018-10-20
  • 2016-10-12
  • 2012-02-08
  • 2017-06-15
  • 2021-06-29
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
  • 2018-06-06
相关资源
最近更新 更多