好吧,我想通了。我做了一些事情。
1.創建一個App/Extensions文件夾,並在該文件夾中創建一個新類。
新類ExampleAuthProvider extends EloquentUserProvider
這裏最棘手的部分是通過舊的問題和文件篩選得到的類使用權列表。這是我的清單。
use App\User;
use Illuminate\Support\Str;
use Illuminate\Contracts\Auth\UserProvider;
use Illuminate\Contracts\Hashing\Hasher as HasherContract;
use Illuminate\Contracts\Auth\Authenticatable as UserContract;
use Illuminate\Auth\EloquentUserProvider;
2.我改寫了retrieveByCredentials()
和validateCredentials()
這裏是retrieveByCredentials()
:
public function retrieveByCredentials(array $credentials)
{
$query = $this->createModel()->newQuery();
foreach ($credentials as $key => $value) {
if (! Str::contains($key, 'value_to_replace_password')) {
$query->where($key, $value);
}
}
return $query->first();
}
和validateCredentials()
:
public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['value_to_replace_password'];
if ($plain != $user->getAuthPassword()) {
return false;
}
return true;
}
現在,這只是FUNC但是我需要在這個新字段上實現哈希,如果你看的EloquentUserProvider
的方法,你會看到它做了哈希檢查。
3.創建一個新的服務提供商。
php artisan make:provider YourNewServiceProvider
在引導方法,以此爲基礎進行了documentation以下。
public function boot()
{
Auth::extend('customAuth', function($app)
{
return new OAuthProvider(new User);
});
}
有一次,我在後面添加散列法,我也將傳遞到new Hasher
OauthProvider
。
請務必導入您的課程。
use Illuminate\Contracts\Hashing\Hasher;
use App\User;
use \Auth;
use App\Extensions\OAuthProvider;
use Illuminate\Support\ServiceProvider;
4.添加您的服務提供商在提供程序名稱到config/app.php
App\Providers\CustomAuthProvider::class,
我也許應該列入服務。
我認爲這就是一切。這是一個有趣的經歷。另外,我會第一個承認我是一個非常新的開發者,也許我搞砸了。