Перегрузить токен доступа к паролю паспорта laravel

Можно ли перегрузить полезную нагрузку токена пароля предоставления паспорта laravel?

мое намерение состоит в том, чтобы встроить некоторые другие данные в сгенерированный хэш токена, такие как имя пользователя, адрес электронной почты и т. д.


person Community    schedule 14.05.2018    source источник


Ответы (2)


Вы можете сгенерировать токен самостоятельно из своего контроллера, как я сделал здесь:

<?php

namespace MyApp\Http\Controllers\API;

use Illuminate\Http\Request;
use Laravel\Passport\Http\Controllers\ConvertsPsrResponses;
use League\OAuth2\Server\AuthorizationServer;
use MyApp\Http\Controllers\APIController;
use Illuminate\Auth\AuthenticationException;
use Zend\Diactoros\ServerRequest;
use Zend\Diactoros\Response as Psr7Response;

class LoginController extends APIController
{

    use ConvertsPsrResponses;

    /**
     *
     * @param Request $request
     * @param AuthorizationServer $authServer
     * @return \Illuminate\Http\JsonResponse
     * @throws AuthenticationException
     * @throws \League\OAuth2\Server\Exception\OAuthServerException
     */
    public function login(Request $request, AuthorizationServer $authServer)
    {
        $token = $this->getPasswordToken($request, $authServer);
        $data = [
            "token_details" => $token,
        ];

        return $this->successResponse(
            'Successful Login',
            200,
            $data
        );

    }


    /**
     * @param $request
     * @param AuthorizationServer $authServer
     * @return mixed
     * @throws \League\OAuth2\Server\Exception\OAuthServerException
     */
    private function getPasswordToken($request, AuthorizationServer $authServer)
    {
        $parsedBody = [
            'grant_type' => 'password',
            'client_id' => config('app.client_id'),
            'client_secret' => config('app.client_secret'),
            'username' => $request->username,
            'password' => $request->password,
            'scope' => '',
        ];

        $serverRequest = new ServerRequest(
            $request->server(),
            [],
            null,
            $request->method(),
            'php://input',
            $request->header(),
            [],
            [],
            $parsedBody
        );

        $response = $this->convertResponse(
            $authServer->respondToAccessTokenRequest($serverRequest, new Psr7Response)
        );
        return json_decode($response->getContent());
    }

}
person Ben Dubuisson    schedule 16.07.2018

Да, это возможно. Пожалуйста, взгляните на этот пакет

https://github.com/benbjurstrom/passport-custom-jwt-claims

person GreatDharmatma    schedule 14.05.2018