Laravel Socialite - GitHub를 사용하여 로그인(Laravel 8.0)
라라빌
Laravel은 무료 개원 PHP 소프트웨어 프레임워크로 Taylor Otwell에서 개발한 것으로 구조 템플릿 모델인 보기-컨트롤러(MVC)와 Symfony를 바탕으로 웹 응용 프로그램을 구축하는 데 목적을 둔다.Laravel의 일부 기능은 관계 관리자에 의존하는 모듈화된 패키지 프레임워크, 관계 데이터베이스에 접근하는 다양한 방식, 응용 프로그램의 배치와 유지보수에 도움이 되는 실용 프로그램을 포함한다.
Laravel에 대한 추가 정보
소셜 로그인은 페이스북, 트위터, Github 또는 Google과 같은 소셜 네트워크 서비스의 기존 정보를 사용하여 단일 로그인하는 형식으로 제3자 응용 프로그램에 로그인하는 것이지 이 응용 프로그램에 대한 새로운 계정을 만드는 것이 아니다.
페이스북, 트위터, 구글, 링크드 인, GitHub, GitLab, Bitbucket을 통해 Laravel Socialite는 OAuth 인증에 직관적이고 유창한 인터페이스를 제공한다.샘플 파일에 쓰기 싫은 거의 모든 소셜 인증 코드를 처리할 수 있어 사용자가 클릭만 하면 프로그램에 쉽게 등록하거나 로그인할 수 있다.
본고에서 Laravel 프레임워크를 사용하여 GitHub를 사용하여 소셜 등록을 만드는 방법을 보여 드리겠습니다.
요구 사항
이 강좌를 계속하기 전에 PHP와 Laravel 프레임워크에 익숙하다고 가정하십시오.만약 당신이 익숙하지 않거나 이전에 라벨 프레임워크를 사용한 적이 없다면, 라벨의 기초 지식을 배워서 적어도 라벨 프레임워크로 응용 프로그램을 개발할 수 있기를 권장합니다.
시작합시다!
1단계
Laravel 프로젝트 만들기
우선 Laravel 프로젝트를 만듭니다.
터미널을 열고 항목을 만들 폴더로 이동하여 다음 명령을 실행합니다.
composer create-project --prefer-dist laravel/laravel socialite
cd socialite
을 실행하여 새로 만든 프로젝트로 탐색하기2단계
설치 프로그램
선택한
code editor
을 사용하여 항목을 엽니다.Visual Studio 코드를 사용합니다..env file
구성 및 데이터베이스 연결DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel-socialite
DB_USERNAME=root
DB_PASSWORD=
터미널을 열고 다음 동작을 실행합니다composer require laravel/ui
php artisan ui vue --auth
npm install && npm run dev
그럼 지금까지 우리가 뭘 했는지 봅시다.php artisan serve
만약 당신이 상술한 기능을 성공적으로 실행했다면, 당신은 반드시 이런 기능을 가지고 있어야 합니다.코드 편집기로 돌아가서 로그인을 엽니다.칼날php 파일, 다음 내용으로 교체
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Login') }}</div>
<div class="card-body">
<form method="POST" action="{{ route('login') }}">
@csrf
<div class="form-group row">
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
@error('email')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="current-password">
@error('password')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<div class="col-md-6 offset-md-4">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
<label class="form-check-label" for="remember">
{{ __('Remember Me') }}
</label>
</div>
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-8 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Login') }}
</button>
@if (Route::has('password.request'))
<a class="btn btn-link" href="{{ route('password.request') }}">
{{ __('Forgot Your Password?') }}
</a>
@endif
</div>
</div>
<div class="form-group row mb-0 mt-3">
<div class="col-md-8 offset-md-4">
<a href="{{ url('/login/github') }}" class="btn btn-warning">
{{ __('Login with Github') }}
</a>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
login.blade.php
을 교체하면 유사한 내용을 볼 수 있습니다.단계 3
소셜 네이티브 설치 및 구성
Laravel socialite를 설치하도록 하겠습니다.
Laravel 프로젝트의 루트 디렉터리에서 다음 명령을 실행하고 패키지를 프로젝트의 종속 항목에 추가합니다.
composer require laravel/socialite
설치가 완료되면 config / app.php
에 서비스 공급업체를 등록해야 합니다.공급자 그룹에서 총
config/app.php
개 추가Laravel\Socialite\SocialiteServiceProvider::class,
같은 파일의 별칭 그룹에 추가'Socialite' => Laravel\Socialite\Facades\Socialite::class,
당신의 Laravel 소프트웨어에서 사교 명원은 이미 모두 설정되어 있으며, 당신은 이미 사교 로그인을 도입할 준비가 되어 있습니다.config/services.php
에 다음 내용 추가'github' => [
'client_id' => env('GITHUB_ID'),
'client_secret' => env('GITHUB_SECRET'),
'redirect' => env('GITHUB_URL'),
],
.env
에 다음 내용 추가
GITHUB_ID=
GITHUB_SECRET=
GITHUB_URL=http://127.0.0.1:8000/github/callback
https://github.com/settings/developers으로 넘어가서 새로운 응용 프로그램을 만듭니다.우리는 이 페이지에 응용 프로그램 이름, 설명, 사이트 이름, 리셋 URL을 놓았습니다.대시보드가 표시됩니다.이제 다음 클라이언트 ID와 클라이언트 기밀을 가져옵니다.
응용 프로그램 ID와 응용 프로그램 기밀 내용을 각각 대시보드 설정에서 GITHUB ID와 GITHUB Secret으로 복사합니다.
app/User.php
으로 이동하여 provider
및 provider_id
추가'name', 'email', 'password', 'provider', 'provider_id',
데이터베이스/마이그레이션 폴더로 이동하여 사용자 모드를 다음과 같이 바꿉니다.<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->nullable();
$table->timestamp('email_verified_at')->nullable();
$table->string('password')->nullable();
$table->string('provider');
$table->string('provider_id');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
php artisan migrate
명령 실행4단계
노선 및 컨트롤러
우리는
web.php
파일에 두 개의 루트를 만들 것입니다.응용 프로그램/노선/사이트로 이동합니다.php 파일을 만들고 여기에 다음 두 개의 루트를 만듭니다Route::get('login/{provider}', 'App\Http\Controllers\Auth\LoginController@redirectToProvider');
Route::get('{provider}/callback', 'App\Http\Controllers\Auth\LoginController@handleProviderCallback');
현재 LoginController.php
을 다음 부품으로 교체<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Socialite;
use App\Models\User;
use Auth;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
/**
* Redirect the user to the provider authentication page.
*
* @return Response
*/
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->redirect();
}
/**
* Obtain the user information from provider.
*
* @return Response
*/
public function handleProviderCallback($provider)
{
$user = Socialite::driver($provider)->user();
$authUser = $this->findOrCreateUser($user, $provider);
Auth::login($authUser, true);
return redirect($this->redirectTo);
}
/**
* If a user has registered before using social auth, return the user
* else, create a new user object.
* @param $user Socialite user object
* @param $provider Social auth provider
* @return User
*/
public function findOrCreateUser($user, $provider)
{
$authUser = User::where('provider_id', $user->id)->first();
if ($authUser) {
return $authUser;
}
return User::create([
'name' => $user->name,
'email' => $user->email,
'provider' => $provider,
'provider_id' => $user->id
]);
}
}
브라우저에서 login with github
클릭github 계정으로 리디렉션합니다.로그인에 성공한 후 데이터베이스는 다음과 같이 해야 합니다
결론
본 강좌에서 저희는 Socialite(Laravel에서 제공하는 공식 패키지)을 사용하여 GitHub 인증서를 사용하여 로그인했습니다. 이 패키지는 Laravel 8.0을 사용하여 OAuth 인증을 하는 데 사용됩니다.
Reference
이 문제에 관하여(Laravel Socialite - GitHub를 사용하여 로그인(Laravel 8.0)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/damoscki11/laravel-socialite-sign-in-with-github-laravel-8-0-467e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)