不幸的是,只能使用'password'
列名稱與包含的database
和eloquent
驅動程序,因爲列名是在用戶提供程序中硬編碼的。所以你唯一的選擇就是通過擴展Eloquent來創建你自己的定製驅動。這四個簡單的步驟來完成下面的解釋:
創建app/extensions/CustomUserProvider.php
文件自定義驅動程序類文件包含以下內容:
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Auth\UserProviderInterface;
class MyCustomUserProvider extends EloquentUserProvider implements UserProviderInterface {
public function retrieveByCredentials(array $credentials)
{
$query = $this->createModel()->newQuery();
foreach ($credentials as $key => $value) {
if ($key != 'SystemUserPassword') $query->where($key, $value);
}
return $query->first();
}
public function validateCredentials(UserInterface $user, array $credentials)
{
return $this->hasher->check($credentials['SystemUserPassword'], $user->SystemUserPassword);
}
}
2.添加"app/extensions"
您composer.json
在classmap
部分:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/extensions" // <-- add this line here
]
},
然後運行php composer dump-autoload
。
在你app/start/global.php
文件內容添加到您的註冊自定義驅動程序:
Auth::extend('mydriver', function($app)
{
return new MyCustomUserProvider($app['hash'], Config::get('auth.model'));
});
4.然後,只需設置驅動程序在你的app/config/auth.php
這樣:
'driver' => 'mydriver',
這經過測試,工作得很好。
你要知道,這將工作假設你的用戶密碼與Hash::make()
方法Laravel報價進行散列並存儲在數據庫中的方式。如果不是,那麼您需要使用自己的普通和散列密碼之間的比較方法調整MyCustomUserProvider
中的validateCredentials
方法。
謝謝你會試試這個! :) – BourneShady