假设有一个应用程序有 10 个动态页面(可能是表单),其中 8 个页面受到限制(需要用户登录应用程序),2 个页面可供匿名用户使用。
我的前端应用程序是Angular 2,后端API是用Laravel 5.4开发的。我对 JWT 代币更着迷,发现 laravel 通过护照具有内置支持。
问题:
注意:我无法使用个人访问令牌,因为它将允许我的应用使用任何受限制的 API 功能。
我在这里使用了 JWT 方法。就我而言,我从我的 API 创建了 JWT 令牌。对于那些想要使用JWT功能的人,他们可以看看这个软件包。我添加了名为“Guest”的新有效负载,并为其分配了布尔值。在我的数据库中,我添加了新用户(称为匿名用户),并将其 id 存储在我的 laravel 配置中。
接下来,我创建了一个新的中间件 VerifyJwtToken,它验证用户,提取其有效负载(使用 base64_decode)并确定它是否是来宾。现在我所有的Laravel路由都在这个中间件中。
接下来,我将这个令牌存储在 laravel 会话以及 localStorage 中(用于通过 angular 访问它)。
现在,我可以轻松地从localStorage访问此令牌。在Angular端,我使用了Angular2Jwt包,它有助于提取令牌并识别它是访客还是登录用户。我还在 Angular 4 中创建了 HTTP 拦截器,它在每个 API 请求中添加了 JWT 令牌作为标头。