Laravel 5.1 和 Angular JS 中的记住用户和忘记密码功能(JWT 身份验证)

Remember Users & Forgot Password Functionality in Laravel 5.1 and Angular JS (JWT Authentication)

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

我进行了很多研究,但没有找到我真正需要的东西,尽管 link 中的答案很有帮助,但不足以让我继续。

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

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

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

从JWT的角度回答。

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

JWT 发行者可以根据用户对 'Remember Me' 复选框的选择来设置不同的 exp 声明(令牌的过期时间)。

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

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