2013-08-14 5 views
2

Как я могу расширить Auth, чтобы использовать мою собственную систему проверки подлинности пакетов?Как продлить Auth в пакете?

Я заменил драйвер auth и зарегистрировал мой ServiceProvider, но что мне нужно сделать внутри его метода register()?

Следующий код не работает:

Auth::extend('example', function($app) { 
    $provider = new Vendor\Package\PackageUserProvider; 
    return new \Illuminate\Auth\Guard($provider, $app['session']); 
}); 

ответ

1

Я думаю, что вы должны сделать это так:

\Auth::extend('example', function() 
    { 
     return new Guard(
      new ExampleUserProvider(
       new BcryptHasher, 
       \Config::get('auth.model') 
      ), 
      \App::make('session') 
     ); 
    }); 

Это создаст новый охранник. Первый параметр - это экземпляр вашего UserProvider, который должен реализовать UserProviderInterface. Второй параметр - это то, где охранник должен хранить аутентифицированную информацию пользователя - в этом случае объект сеанса, созданный в IoC.

+0

Спасибо @faust, но ваш код возвращает следующую ошибку: 'Вызов неопределенного метода Illuminate \ Support \ Facades \ Auth :: extend()' –

+0

Это странно. Где вы поместили код? Попробуйте без обратной косой черты перед Auth и поместите ее в app/start/global.php. Не забудьте добавить использование Illuminate \ Auth \ Guard; – faust

+1

Извините, я виноват: я помещаю ваш код внутрь 'register()' вместо 'boot()'. Еще раз спасибо! –