我有一个拥有客户端(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,email ect。),我还想检查令牌是否有效/安全使用。
答案 0 :(得分: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,
],
]);
以下是Laravel创始人Taylor Otwell的Passport intro video