Laravel 护照创建令牌和刷新令牌
Laravel passport create token and refresh token
我在我的项目中使用 Laravel 和通行证。
在我的项目中,用户可以通过两种方式获取令牌。
首先使用用户名和密码,通过护照就可以了。
第二个用短信发送的验证码是我的问题。
我尝试了 createToken()
方法,但它会生成没有刷新令牌的个人令牌,并且 我需要创建带有刷新令牌的令牌并在控制器中指定客户端 ID(没有 HTTP 请求)。
$user = App\User::find(1);
// Creating a token without scopes...
$token = $user->createToken('Token Name')->accessToken;
我该怎么做?
创建一个扩展 \Laravel\Passport\Http\Controllers\AccessTokenController
的新控制器 AccessTokenController
<?php
namespace App\Http\Controllers;
use App\User;
use Exception;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use League\OAuth2\Server\Exception\OAuthServerException;
use Psr\Http\Message\ServerRequestInterface;
use Response;
class AccessTokenController extends \Laravel\Passport\Http\Controllers\AccessTokenController
{
public function issueToken(ServerRequestInterface $request)
{
try {
//get username (default is :email)
$username = $request->getParsedBody()['username'];
//get user
$user = User::where('email', '=', $username)->firstOrFail();
//issuetoken
$tokenResponse = parent::issueToken($request);
//convert response to json string
$content = $tokenResponse->getBody()->__toString();
//convert json to array
$data = json_decode($content, true);
if(isset($data["error"]))
throw new OAuthServerException('The user credentials were incorrect.', 6, 'invalid_credentials', 401);
//add access token to user
$user = collect($user);
$user->put('access_token', $data['access_token']);
$user->put('expires_in', $data['expires_in']);
$user->put('refresh_token', $data['refresh_token']);
return Response::json(array($user));
}
catch (ModelNotFoundException $e) { // email notfound
//return error message
}
catch (OAuthServerException $e) { //password not correct..token not granted
//return error message
}
catch (Exception $e) {
////return error message
}
}
}
您可以使用以下命令生成client_id
php artisan passport:client
我找到了一个包,我正在使用它
https://github.com/qiutuleng/laravel-passport-phone-verification-code-grant
很好。
我在我的项目中使用 Laravel 和通行证。 在我的项目中,用户可以通过两种方式获取令牌。 首先使用用户名和密码,通过护照就可以了。 第二个用短信发送的验证码是我的问题。
我尝试了 createToken()
方法,但它会生成没有刷新令牌的个人令牌,并且 我需要创建带有刷新令牌的令牌并在控制器中指定客户端 ID(没有 HTTP 请求)。
$user = App\User::find(1);
// Creating a token without scopes...
$token = $user->createToken('Token Name')->accessToken;
我该怎么做?
创建一个扩展 \Laravel\Passport\Http\Controllers\AccessTokenController
<?php
namespace App\Http\Controllers;
use App\User;
use Exception;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use League\OAuth2\Server\Exception\OAuthServerException;
use Psr\Http\Message\ServerRequestInterface;
use Response;
class AccessTokenController extends \Laravel\Passport\Http\Controllers\AccessTokenController
{
public function issueToken(ServerRequestInterface $request)
{
try {
//get username (default is :email)
$username = $request->getParsedBody()['username'];
//get user
$user = User::where('email', '=', $username)->firstOrFail();
//issuetoken
$tokenResponse = parent::issueToken($request);
//convert response to json string
$content = $tokenResponse->getBody()->__toString();
//convert json to array
$data = json_decode($content, true);
if(isset($data["error"]))
throw new OAuthServerException('The user credentials were incorrect.', 6, 'invalid_credentials', 401);
//add access token to user
$user = collect($user);
$user->put('access_token', $data['access_token']);
$user->put('expires_in', $data['expires_in']);
$user->put('refresh_token', $data['refresh_token']);
return Response::json(array($user));
}
catch (ModelNotFoundException $e) { // email notfound
//return error message
}
catch (OAuthServerException $e) { //password not correct..token not granted
//return error message
}
catch (Exception $e) {
////return error message
}
}
}
您可以使用以下命令生成client_id
php artisan passport:client
我找到了一个包,我正在使用它 https://github.com/qiutuleng/laravel-passport-phone-verification-code-grant
很好。