Laravel Passport - 嘉宾令牌

时间:2017-02-27 13:44:46

标签: laravel laravel-passport

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

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

问题:

  1. 我可以轻松地将password grant tokens用于这8个限制页面。但是,如何将访客令牌提供给我的Angular应用程序以访问这2页
  2. 如何限制访客用户访问8限制页面的API功能。 (或者如何检查访问用户是访客还是在API端登录用户)
  3.   

    注意:我无法使用Personal Access Tokens因为它允许我的应用   使用任何受限制的API功能。

1 个答案:

答案 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标记作为标头。