lumen 5.4 에서 custom user provider 설정하기
auth.php
여기서는 config/auth.php 도 변경해야 한다. 원래 lumen 은 config 폴더가 기본적으로 없는데, 그냥 만들어서 auth.php 를 작성해 놓으면 알아서 load 한다.default auth.php 는 아래경로 에서 찾을 수 있다.
- vendor/laravel/lumen-framework/config/auth.php
절차
custom provider 를 위해서 해줘야 할 일은 아래와 같다.- auth.php 에서 driver 설정 변경
- custom provider 를 app.php 에서 등록
- CustomAuthProvider , CustomUserProvider 만들기
auth.php 에서 driver 설정 변경
config/auth.php 에서 아래처럼 작성한다.
'providers' => [
'users' => [
'driver' => 'custom',
'model' => App\MyMember::class,
],
],
custom provider 를 app.php 에서 등록
app.php 에서 CustomAuthProvider 를 등록한다.$app->register(App\Providers\CustomAuthProvider::class);
App\Provider\CustomAuthProvider 작성
<?php
namespace App\Providers;
use Auth;
use Illuminate\Support\ServiceProvider;
class CustomAuthProvider extends ServiceProvider {
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
// register new driver 'custom' for user privder
Auth::provider('custom', function($app, array $config) {
// Return an instance of Illuminate\Contracts\Auth\UserProvider
return new CustomUserProvider($app['hash'], $config['model']);
});
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
}
App\Provider\CustomUserProvider 작성
직접 UserProvider 를 implement 해도 되지만, 여기서는 그냥 EloquentUserProvider 를 상속받아서 작업했다.<?php namespace App\Providers; use Auth; use App\MyMember; use Illuminate\Auth\EloquentUserProvider; use Illuminate\Contracts\Auth\Authenticatable; class CustomUserProvider extends EloquentUserProvider { /** * Retrieve a user by the given credentials. * * @param array $credentials * @return \Illuminate\Contracts\Auth\Authenticatable|null */ public function retrieveByCredentials(array $credentials) { // TODO: Implement retrieveByCredentials() method. $qry = MyMember::where('email','=',$credentials['email']); if($qry->count() > 0) { $user = $qry->select('dj_id','dj_name','email','password')->first(); return $user; } return null; } }
댓글 없음:
댓글 쓰기