3

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

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

问题:

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

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

4

1 回答 1

2

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

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

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

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

于 2017-07-08T11:36:10.160 回答