所以我剛剛用 Breeze 啟動了一個 Laravel 專案,我想更改默認表users,問題是它不起作用,我做了幾天的研究,但沒有得到任何成功的結果
我將嘗試解釋問題是什么以及到目前為止我嘗試了什么。
首先,我創建了一個名為users_data的新表,該表與users表完全不同。users_data具有的欄位例如:name_value、password_value、age_value、email_value等(我還必須提到,對于表users_data,它不使用遷移,因為我已經有一個 sql 檔案,并添加了它直接到資料庫(我已經創建了帶有主鍵和外鍵的表,所以我無法進行遷移,因為這會花費我很多時間),并且沒有遷移我仍然可以獲得資料,所以我不認為這可能是這個問題)。
實際上我正在使用 Breeze,但是,我也使用了 Auth 腳手架(PHP artisan make: Auth)
我嘗試了什么:
經過幾天的搜索,首先我創建了一個新模型,名為UsersModel ,其內容與User Model相同,但我更改的是:
protected $table = 'users_data';
protected $fillable = [
*name_value*,
*password_value*,
];
和一個額外的功能來覆寫微風或身份驗證的默認密碼(我猜):
public function getAuthPassword()
{
return $this->password_value;
}
接下來我去了conf/auth.php
我在那里指定了模型:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\UsersModel::class,
],
以及要使用的表格:
/*
|--------------------------------------------------------------------------
| Authentication Table
|--------------------------------------------------------------------------
|
| When using the "Database" authentication driver, we need to know which
| table should be used to retrieve your users. We have chosen a basic
| default value but you may easily change it to any table you like.
|
*/
'table' => 'users_data',
在此之后我去了視圖login.blade.php,只更改了電子郵件輸入(對于我在不同頁面上閱讀的內容,更改密碼輸入會導致不同的問題,因為我需要進行很多更改才能做到這一點作業,所以最好的辦法是用模型中指定的getAuthPassword覆寫它):
新名稱輸入:
x-input id="email" class="block mt-1 w-full" type="text" name="name_value" :value="old('name_value')" required autofocus />
在這一切之后,我去了LoginRequest(登錄驗證),在那里我將電子郵件替換為name_value
我試圖除錯這個:
dd(Auth::attempt($this->only('name_value', 'password'), $this->boolean('remember')));
并回傳 false
我注意到在vendor/laravel/ui/auth-back/AuthenticatesUsers中有一個函式
呼叫username(),它回傳 'email'
當我看到我記得一個頁面說這個函式也可以覆寫,所以我將回傳值更改為name_value,它并沒有做任何事情
最后,澄清一下,
我不需要注冊站點我只需要登錄頁面,因此在 $fillable 中我沒有添加資料庫的所有列,只是我需要登錄的那些(name_value,password_value)
如果有人可以幫助我并指導我,那就太好了,因為我已經沒有想法了(我可以單獨使用 PHP,但是,我需要->middleware ['Auth],有沒有辦法激活如果用戶存在,中間件?)
uj5u.com熱心網友回復:
我認為編輯供應商檔案不是一個好習慣。我們不會將它們推送到版本控制,因此其他開發人員不會有您的更改。此外,Laravel 已經有一種方法可以在不編輯供應商檔案的情況下覆寫用戶名值。
只需在您的身份驗證控制器中使用該特征,如下所示:
public class MyLoginController {
use AuthenticatesUsers; // or you can also use ThrottlesLogins trait
// then override the username function here
public function username() {
return 'name_value';
}
}
要覆寫密碼,您可以在User模型上定義:
public function getPasswordAttribute() {
return $this->attributes['password_value'];
}
public function getAuthPassword() {
return $this->password_value;
}
我沒有對此進行測驗,但根據檔案,您應該這樣做。還要確保閱讀這個Laravel 檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/473018.html
上一篇:如何在陣列中創建一個陣列?
下一篇:如何將多維陣列合并為陣列
