> 백엔드 개발 > PHP 튜토리얼 > laravel Passport를 사용하여 API 인증을 구현하는 방법

laravel Passport를 사용하여 API 인증을 구현하는 방법

不言
풀어 주다: 2023-04-03 08:22:01
원래의
2142명이 탐색했습니다.

이 글은 주로 laravel Passport를 API 인증에 사용하는 방법을 소개합니다. 이제는 모든 사람과 공유합니다. 필요한 친구들이 참고할 수 있습니다.

larave 설치

laravel new passport_demo
cd passport_demo && composer install
로그인 후 복사

.env의 데이터베이스 구성을 수정하세요. 자체 데이터베이스 구성

 DB_DATABASE=homestead
 DB_USERNAME=homestead
 DB_PASSWORD=secret
로그인 후 복사

Passport 설치

composer require laravel/passport
php artisan migrate
php artisan passport:install
로그인 후 복사

Illuminate\Database\QueryException  : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))
로그인 후 복사

Edit

 namespace App\Providers;
 use Illuminate\Support\ServiceProvider;
 use Illuminate\Support\Facades\Schema;//新增
 class AppServiceProvider extends ServiceProvider{
     public function boot(){}
     public function register(){
         Schema::defaultStringLength(191);//新增
     }
 }
로그인 후 복사

실행 시 다음 오류가 발생할 수 있습니다.그런 다음 이 두 명령을 실행하세요

php artisan migrate
php artisan passport:install
로그인 후 복사

Edit가

 namespace App;
 use Illuminate\Notifications\Notifiable;
 use Illuminate\Foundation\Auth\User as Authenticatable;
 use Laravel\Passport\HasApiTokens;//新增
 class User extends Authenticatable{
     use Notifiable;
     use HasApiTokens;//新增
     protected $fillable = ['name', 'email', 'password',];
     protected $hidden = ['password', 'remember_token',];
 }
로그인 후 복사
에 추가됩니다

메서드의 함수 호출

 namespace App\Providers;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
 use Laravel\Passport\Passport;//新增
 class AuthServiceProvider extends ServiceProvider{
     protected $policies = ['App\Model' => 'App\Policies\ModelPolicy',];
     public function boot(){
         $this->registerPolicies();
         Passport::routes();//新增
     }
 }
로그인 후 복사

구성 파일의 인증 가드 옵션을

//修改前
 'guards' => [
     'web' => [
         'driver' => 'session',
         'provider' => 'users',
     ],
     'api' => [
         'driver' => 'token',
         'provider' => 'users',
     ],
 ],
로그인 후 복사
// 修改后
 'guards' => [
     'web' => [
         'driver' => 'session',
         'provider' => 'users',
     ],
     'api' => [
         'driver' => 'passport',
         'provider' => 'users',
     ],
 ],
로그인 후 복사

파일 생성으로 변경하세요. 여기에 있는 코드는 다른 튜토리얼에서 가져온 것입니다.

 namespace App\Http\Controllers;
 use Illuminate\Http\Request;
 use App\Http\Controllers\Controller;
 use App\User;
 use Illuminate\Support\Facades\Auth;
 use Validator;
 class UserController extends Controller {
     public $successStatus = 200;
     public function login() {
         if(Auth::attempt(['email' => request('email'), 'password' => request('password')])) {
             $user = Auth::user();
             $success['token'] =  $user->createToken('MyApp')->accessToken;
             return response()->json(['success' => $success], $this->successStatus);
         }
         else{
             return response()->json(['error'=>'Unauthorised'], 401);
         }
     }
     public function register(Request $request) {
         $validator = Validator::make($request->all(), [
             'name' => 'required',
             'email' => 'required|email',
             'password' => 'required',
             'c_password' => 'required|same:password',
         ]);
         if ($validator->fails()) {
             return response()->json(['error'=>$validator->errors()], 401);
         }
         $input = $request->all();
         $input['password'] = bcrypt($input['password']);
         $user = User::create($input);
         $success['token'] =  $user->createToken('MyApp')->accessToken;
         $success['name'] =  $user->name;
         return response()->json(['success'=>$success], $this->successStatus);
     }
     public function details() {
         $user = Auth::user();
         return response()->json(['success' => $user], $this->successStatus);
     }
 }
로그인 후 복사

postman을 사용하여 테스트
등록 인터페이스, 등록 성공 후 토큰 및 사용자 이름이 반환됩니다
laravel Passport를 사용하여 API 인증을 구현하는 방법

로그인 인터페이스
laravel Passport를 사용하여 API 인증을 구현하는 방법

세부 인터페이스
laravel Passport를 사용하여 API 인증을 구현하는 방법

관련 권장 사항:

설치 및 구성 프로세스 정보 Laravel의 10월

위 내용은 laravel Passport를 사용하여 API 인증을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿