1 回答

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
您想要做的是實(shí)現(xiàn)您自己的用戶提供程序,以使用外部 POP3 電子郵件系統(tǒng)驗(yàn)證您的用戶憑據(jù)。
我不認(rèn)為您需要自定義您的 Guard,因?yàn)槲壹僭O(shè)您仍然希望StatefulGuard
默認(rèn)的SessionGuard
Guard 會(huì)檢查并存儲(chǔ)有關(guān)會(huì)話中身份驗(yàn)證狀態(tài)的信息。
我認(rèn)為除了如何驗(yàn)證所提供的憑據(jù)之外,您可能還需要所有其他默認(rèn)行為。
也許./app/Providers/
您可以在文件夾中創(chuàng)建:
PopThreeUserProvider.php
namespace App\Providers;
use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Contracts\Auth\Authenticatable as UserContract;
class PopThreeUserProvider extends EloquentUserProvider
{
? ? /**
? ? ?* Validate a user against the given credentials.
? ? ?*
? ? ?* @param? \Illuminate\Contracts\Auth\Authenticatable? $user
? ? ?* @param? array? $credentials
? ? ?* @return bool
? ? ?*/
? ? public function validateCredentials(UserContract $user, array $credentials)
? ? {
? ? ? ? // Implement your pop3 authentication here, I have left the default code
? ? ? ? // for the Eloquent provider below
? ? ? ? $plain = $credentials['password'];
? ? ? ? return $this->hasher->check($plain, $user->getAuthPassword());
? ? }
}
現(xiàn)在在你的./app/Providers/AuthServiceProvider.php
class AuthServiceProvider extends ServiceProvider
{
? ? ...
? ? /**
? ? ?* Register any application authentication / authorization services.
? ? ?*
? ? ?* @return void
? ? ?*/
? ? public function boot()
? ? {
? ? ? ? ...
? ? ? ? Auth::provider('pop3', function ($app, array $config) {
? ? ? ? ? ? return new PopThreeUserProvider($app->make('hash'), $config['model']);
? ? ? ? });
? ? ? ? ...
? ? }
? ? ...
}
現(xiàn)在在你的config/auth.php:
? ? ...
? ? 'providers' => [
? ? ? ? 'users' => [
? ? ? ? ? ? 'driver' => 'pop3',
? ? ? ? ],
? ? ],
? ? ...
當(dāng)然,這一切都假設(shè)您擁有:
class User extends Authenticatable
{
? ? protected $table = 'sys_users';
? ? protected $primaryKey = 'user_acc';
? ? protected $incrementing = false;
? ? ...
- 1 回答
- 0 關(guān)注
- 152 瀏覽
添加回答
舉報(bào)