Auth0 Laravel:验证令牌并获取用户信息

Posted

技术标签:

【中文标题】Auth0 Laravel:验证令牌并获取用户信息【英文标题】:Auth0 Laravel: Validate token and get user information 【发布时间】:2017-07-13 17:45:49 【问题描述】:

我有一个项目,它有一个客户端 (Angular 2) 和一个 API (Laravel 5.4)。我想使用 Laravel 作为 API,但我希望 API 受到来自 Auth0 的 json 令牌的保护。

因此,每当我向 Laravel(来自 Angular)发出 http 请求时,我都会发送发出请求的用户的令牌。

我在 Laravel 中制作了这个控制器:

<?php
namespace App\Http\Controllers;

use App\Http\Requests;
use Illuminate\Http\Request;
use Auth0\SDK\Auth0;

class JWTVerificationController extends Controller

    public function __construct(Request $request) 
      $this->req = $request; 
      $auth0 = new Auth0(array(
          'domain'        => 'x',
          'client_id'     => 'x',
          'client_secret' => 'x',
          'redirect_uri'  => ''
      ));


    

问题是我不知道如何对实例做任何事情,我找不到 PHP/Laravel 的任何 Auth0 文档。除了“登录”教程。

所以,我想获取用户的数据(如 app_metadata、user_metadata、电子邮件等),并且我想检查令牌是否有效/可以安全使用。

【问题讨论】:

没人知道这个?! 【参考方案1】:

所以这实际上是Laravel Passport 的用途。

设置好之后,可能会有this这样的请求:

$http = new GuzzleHttp\Client;

$response = $http->post('http://your-app.com/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => 'client-id',
        'client_secret' => 'client-secret',
        'username' => 'taylor@laravel.com',
        'password' => 'my-password',
        'scope' => '',
    ],
]);

return json_decode((string) $response->getBody(), true);

您也可以在 Passport 中创建Personal Access Tokens,然后通过

进行授权
$response = $client->request('GET', '/api/user', [
    'headers' => [
        'Accept' => 'application/json',
        'Authorization' => 'Bearer '.$accessToken,
    ],
]);

这里是 Passport intro video,作者是 Laravel 的创建者 Taylor Otwell

【讨论】:

谢谢,我希望有人知道如何在创建的实例中执行此操作,否则我将不得不更改/添加很多东西。

以上是关于Auth0 Laravel:验证令牌并获取用户信息的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Auth0 未授权用户

Laravel,如何从自定义表的 jwt 令牌获取登录用户

PHP中的Auth0 JWT令牌验证

获取经过身份验证的用户 Laravel/Lumen Passport

如何使用基于 JWT 令牌的 express 获取经过身份验证的用户信息

Xamarin 和 Auth0 - 获取刷新令牌