提问者:小点点

拉拉维尔护照 - 客人令牌


假设有一个应用程序有 10 个动态页面(可能是表单),其中 8 个页面受到限制(需要用户登录应用程序),2 个页面可供匿名用户使用。

我的前端应用程序是Angular 2,后端API是用Laravel 5.4开发的。我对 JWT 代币更着迷,发现 laravel 通过护照具有内置支持。

问题:

  1. 我可以轻松地为这 8 个受限页面使用密码授予令牌。但是我如何为我的 Angular 应用程序提供访客令牌以访问这两个页面
  2. 如何限制访客用户访问 8 个受限页面的 API 功能。(或者如何在API端检查访问的用户是访客还是登录用户)

注意:我无法使用个人访问令牌,因为它将允许我的应用使用任何受限制的 API 功能。


共1个答案

匿名用户

我在这里使用了 JWT 方法。就我而言,我从我的 API 创建了 JWT 令牌。对于那些想要使用JWT功能的人,他们可以看看这个软件包。我添加了名为“Guest”的新有效负载,并为其分配了布尔值。在我的数据库中,我添加了新用户(称为匿名用户),并将其 id 存储在我的 laravel 配置中。

接下来,我创建了一个新的中间件 VerifyJwtToken,它验证用户,提取其有效负载(使用 base64_decode)并确定它是否是来宾。现在我所有的Laravel路由都在这个中间件中。

接下来,我将这个令牌存储在 laravel 会话以及 localStorage 中(用于通过 angular 访问它)。

现在,我可以轻松地从localStorage访问此令牌。在Angular端,我使用了Angular2Jwt包,它有助于提取令牌并识别它是访客还是登录用户。我还在 Angular 4 中创建了 HTTP 拦截器,它在每个 API 请求中添加了 JWT 令牌作为标头。