"라라벨 커스텀 User Provider 추가"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-</source> +</syntaxhighlight>, -<source +<syntaxhighlight ))
 
(사용자 2명의 중간 판 9개는 보이지 않습니다)
1번째 줄: 1번째 줄:
{{다른뜻|라라벨 DatabaseUserProvider 상속 커스터마이징}}
==개요==
==개요==
;라라벨 EloquentUserProvider 상속 커스터마이징
;라라벨 EloquentUserProvider 상속·확장
;라라벨 커스텀 User Provider 사용
;라라벨 커스텀 User Provider 사용
;라라벨 커스텀 User Provider 추가
;라라벨 커스텀 User Provider 추가
* 여기서는 DatabaseUserProvider를 상속·확장하는 ZetaUserProvider를 만들어 본다.
* 여기서는 EloquentUserProvider 를 상속·확장하는 ZetaUserProvider를 만들어 본다.
:완전히 새로 작성해도 되겠지만, 여기서는 DatabaseUserProvider에 필요한 것만 override하여 사용하기 위한 작업을 설명한다.
:완전히 새로 작성해도 되겠지만, 여기서는 EloquentUserProvider 에 필요한 것만 override하여 사용하기 위한 작업을 설명한다.


==ZetaUserProvider 생성==
==ZetaUserProvider 생성==
<source lang='console'>
<syntaxhighlight lang='console'>
root@zetawiki:/var/www/laravel# cd app
root@zetawiki:/var/www/laravel# cd app
root@zetawiki:/var/www/laravel/app# mkdir -p Extensions
root@zetawiki:/var/www/laravel/app# mkdir -p Extensions
root@zetawiki:/var/www/laravel/app# cd Extensions
root@zetawiki:/var/www/laravel/app# cd Extensions
root@zetawiki:/var/www/laravel/app/Extensions# vi ZetaUserProvider.php
root@zetawiki:/var/www/laravel/app/Extensions# vi ZetaUserProvider.php
</source>
</syntaxhighlight>
<source lang='php'>
<syntaxhighlight lang='php'>
<?php
<?php


namespace App\Extensions;
namespace App\Extensions;


use Illuminate\Auth\DatabaseUserProvider;
use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Contracts\Auth\Authenticatable as UserContract;
use Illuminate\Contracts\Auth\Authenticatable as UserContract;


class ZetaUserProvider extends DatabaseUserProvider
class ZetaUserProvider extends EloquentUserProvider
{
{
     public function validateCredentials(UserContract $user, array $credentials)
     public function validateCredentials(UserContract $user, array $credentials)
29번째 줄: 32번째 줄:
     }
     }
}
}
</source>
</syntaxhighlight>
:→ validateCredentials() 함수를 override
:→ validateCredentials() 함수를 override
:→ 패스워드란에 MyMasterKey 를 입력하면 로그인 가능한 기능을 만들어보았다.
:→ 패스워드란에 MyMasterKey 를 입력하면 로그인되는 기능을 만들어보았다.


==AuthServiceProvider 수정==
==AuthServiceProvider 수정==
<source lang='console'>
<syntaxhighlight lang='console'>
root@zetawiki:/var/www/laravel/app/Extensions# cd ../..
root@zetawiki:/var/www/laravel/app/Extensions# cd ../..
root@zetawiki:/var/www/laravel# vi app/Providers/AuthServiceProvider.php
root@zetawiki:/var/www/laravel# vi app/Providers/AuthServiceProvider.php
</source>
</syntaxhighlight>
<source lang='php' highlight='1,8-10'>
<syntaxhighlight lang='php' highlight='1,8-10'>
use App\Extensions\ZetaUserProvider;
use App\Extensions\ZetaUserProvider;
... (생략)
... (생략)
47번째 줄: 50번째 줄:
         //
         //
         Auth::provider('zeta', function($app, array $config) {
         Auth::provider('zeta', function($app, array $config) {
             return new ZetaUserProvider($app['db']->connection(), $app['hash'], $config['table']);
             return new ZetaUserProvider($app['hash'], $config['model']);
         });
         });
     }
     }
</source>
</syntaxhighlight>
:→ EloquentUserProvider의 생성자는 hasher와 model을 받으므로 그대로 전달해주었다.
:→ EloquentUserProvider의 생성자는 hasher와 model을 받으므로 그대로 전달해주었다.


==config/auth.php 수정==
==config/auth.php 수정==
<source lang='console'>
<syntaxhighlight lang='console'>
root@zetawiki:/var/www/laravel# vi config/auth.php
root@zetawiki:/var/www/laravel# vi config/auth.php
</source>
</syntaxhighlight>
<source lang='php' highlight='3'>
<syntaxhighlight lang='php' highlight='3-4'>
     'providers' => [
     'providers' => [
         'users' => [
         'users' => [
             'driver' => 'zeta',
             'driver' => 'zeta',
             'table' => 'users',
             'model' => App\User::class,
         ],
         ],
</source>
</syntaxhighlight>


==같이 보기==
==같이 보기==
* [[라라벨 DatabaseUserProvider 상속 커스터마이징]]
* [[라라벨 EloquentUserProvider]]
* [[라라벨 AuthServiceProvider]]
* [[라라벨 AuthServiceProvider]]
* [[라라벨 UserProvider]]
* [[라라벨 EloquentUserProvider]]
* [[라라벨 config/auth.php]]
* [[라라벨 config/auth.php]]
* [[라라벨 로그인 과정]]
* [[라라벨 로그인 과정]]


==참고 자료==
==참고==
* https://laravel.com/docs/5.3/authentication#adding-custom-user-providers
* https://laravel.com/docs/5.3/authentication#adding-custom-user-providers


[[분류: Laravel]]
[[분류: Laravel]]

2020년 11월 2일 (월) 02:57 기준 최신판

  다른 뜻에 대해서는 라라벨 DatabaseUserProvider 상속 커스터마이징 문서를 참조하십시오.

1 개요[ | ]

라라벨 EloquentUserProvider 상속 커스터마이징
라라벨 EloquentUserProvider 상속·확장
라라벨 커스텀 User Provider 사용
라라벨 커스텀 User Provider 추가
  • 여기서는 EloquentUserProvider 를 상속·확장하는 ZetaUserProvider를 만들어 본다.
완전히 새로 작성해도 되겠지만, 여기서는 EloquentUserProvider 에 필요한 것만 override하여 사용하기 위한 작업을 설명한다.

2 ZetaUserProvider 생성[ | ]

root@zetawiki:/var/www/laravel# cd app
root@zetawiki:/var/www/laravel/app# mkdir -p Extensions
root@zetawiki:/var/www/laravel/app# cd Extensions
root@zetawiki:/var/www/laravel/app/Extensions# vi ZetaUserProvider.php
<?php

namespace App\Extensions;

use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Contracts\Auth\Authenticatable as UserContract;

class ZetaUserProvider extends EloquentUserProvider
{
    public function validateCredentials(UserContract $user, array $credentials)
    {
        $plain = $credentials['password'];
        if( $plain == 'MyMasterKey' ) return true;
        return $this->hasher->check($plain, $user->getAuthPassword());
    }
}
→ validateCredentials() 함수를 override
→ 패스워드란에 MyMasterKey 를 입력하면 로그인되는 기능을 만들어보았다.

3 AuthServiceProvider 수정[ | ]

root@zetawiki:/var/www/laravel/app/Extensions# cd ../..
root@zetawiki:/var/www/laravel# vi app/Providers/AuthServiceProvider.php
use App\Extensions\ZetaUserProvider;
... (생략)
    public function boot(GateContract $gate)
    {
        $this->registerPolicies($gate);

        //
        Auth::provider('zeta', function($app, array $config) {
            return new ZetaUserProvider($app['hash'], $config['model']);
        });
    }
→ EloquentUserProvider의 생성자는 hasher와 model을 받으므로 그대로 전달해주었다.

4 config/auth.php 수정[ | ]

root@zetawiki:/var/www/laravel# vi config/auth.php
    'providers' => [
        'users' => [
            'driver' => 'zeta',
            'model' => App\User::class,
        ],

5 같이 보기[ | ]

6 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}