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