Laravel 7.X Passport 인증으로 API Rest 생성 및 새로 고침 토큰 구현(1부)
                                            
                                                
                                                
                                                
                                                
                                                
                                                 17563 단어  laravelphpauthenticationapi
                    
1단계. 라라벨 설치
이 명령으로 laravel을 설치합니다.
laravel new website
2단계. Laravel Passport 패키지 및 Guzzle 설치
Laravel Passport는 완전한 OAuth2 서버 구현을 제공합니다.
composer require laravel/passport
composer require guzzlehttp/guzzle
composer require symfony/psr-http-message-bridge
3단계. 저장소 권한 수정을 위해 다음 명령 실행
sudo chown -R $USER:www-data storage
sudo chmod -R 775 storage
4단계. 마이그레이션 실행
애플리케이션이 클라이언트 및 액세스 토큰을 저장하는 데 필요한 테이블 생성
php artisan migrate
5단계. 키 생성
이 추천으로 액세스 토큰을 생성하는 데 필요한 "개인 액세스"및 "비밀번호 부여"를 생성합니다.
php artisan passport:install
6단계. 사용자 클래스에 특성 추가
이 특성에는 몇 가지 도우미 기능이 있습니다.
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Passport\HasApiTokens;class User extends Authenticatable #chenged
{
    use Notifiable, HasApiTokens; #changed
...
6단계. Passport 경로 호출 및 일부 구성 추가
AuthServiceProvider의 부팅 메서드 내에서 Passport::routes 메서드를 호출하고 토큰 수명을 다음과 같이 변경합니다.
<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
use Laravel\Passport\Passport;
use Carbon\Carbon;
class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        // 'App\Model' => 'App\Policies\ModelPolicy',
    ];
    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();
        Passport::routes();
        Passport::tokensExpireIn(Carbon::now()->addDays(1));
        Passport::refreshTokensExpireIn(Carbon::now()->addDays(10));
    }
}
7단계. 마지막으로 API 드라이버를 변경해야 합니다.
다음과 같이 config/auth.php에서 api 드라이브를 변경해야 합니다.
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],
8단계. API 경로 생성
<?php
use Illuminate\Support\Facades\Route;
Route::post('login', 'UserController@login');
Route::post('register', 'UserController@register');
9단계. 컨트롤러 생성
php artisan make:controller UserController
10단계. 컨트롤러 완성
<?php
namespace App\Http\Controllers;
use App\User; 
use Validator;
use Exception;
use GuzzleHttp\Client;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; 
use Laravel\Passport\Client as OClient; 
class UserController extends Controller
{
    public $successStatus = 200;
    public function login() { 
        if (Auth::attempt(['email' => request('email'), 'password' => request('password')])) { 
            $oClient = OClient::where('password_client', 1)->first();
            return $this->getTokenAndRefreshToken($oClient, request('email'), request('password'));
        } 
        else { 
            return response()->json(['error'=>'Unauthorised'], 401); 
        } 
    }
    public function register(Request $request) { 
        $validator = Validator::make($request->all(), [ 
            'name' => 'required', 
            'email' => 'required|email|unique:users', 
            'password' => 'required', 
            'c_password' => 'required|same:password', 
        ]);
        if ($validator->fails()) { 
            return response()->json(['error'=>$validator->errors()], 401);            
        }
        $password = $request->password;
        $input = $request->all(); 
        $input['password'] = bcrypt($input['password']); 
        $user = User::create($input); 
        $oClient = OClient::where('password_client', 1)->first();
        return $this->getTokenAndRefreshToken($oClient, $user->email, $password);
    }
    public function getTokenAndRefreshToken(OClient $oClient, $email, $password) { 
        $oClient = OClient::where('password_client', 1)->first();
        $http = new Client;
        $response = $http->request('POST', 'http://mylemp-nginx/oauth/token', [
            'form_params' => [
                'grant_type' => 'password',
                'client_id' => $oClient->id,
                'client_secret' => $oClient->secret,
                'username' => $email,
                'password' => $password,
                'scope' => '*',
            ],
        ]);
        $result = json_decode((string) $response->getBody(), true);
        return response()->json($result, $this->successStatus);
    }
}
11단계. 이제 테스트해 보겠습니다.
php artisan serve
12단계. 매력처럼 작동합니다.
먼저 이렇게 등록해야 합니다.

그런 다음 다시 등록하고 토큰을 줄 수 있습니다.

다음 부분에서는 토큰이 필요한 개인 경로를 만들고 예외를 처리하고 새로 고침 토큰 시나리오를 구현합니다.
Reference
이 문제에 관하여(Laravel 7.X Passport 인증으로 API Rest 생성 및 새로 고침 토큰 구현(1부)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/azibom/create-api-rest-with-laravel-7-x-passport-authentication-and-implement-refresh-token-part-1-43ja텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)