2015-09-25 42 views
2

標題幾乎總結了它。使用Google對用戶進行身份驗證時,我無法使用Auth::attempt如何使用Google OAuth在Laravel中設置Remember Token

我試着在用戶類中放入以下內容,但似乎沒有奏效。

public function getAuthPassword() 
{ 
    return $this->some_field; 
} 

有沒有辦法手動設置記憶標記?或者有什麼辦法可以告訴Laravel爲密碼查看不同的字段?

我打算試圖擴展Auth::();我們會看看那是怎麼回事。

回答

1

好吧,我想通了。我做了一些事情。

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 HasherOauthProvider

請務必導入您的課程。

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,

我也許應該列入服務。

我認爲這就是一切。這是一個有趣的經歷。另外,我會第一個承認我是一個非常新的開發者,也許我搞砸了。

相關問題