[英]Laravel 6.x Set auth()->user() By Getting Current User From Axios Call
我正在與一個團隊合作,我們在該團隊中構建了一個已經具有用戶登錄身份驗證的應用程序。 它存儲了當前用戶的ID,以便可以通過調用來調用它:
axios.get('/user/getmyid')
.then((response_ => {
user_ID = response.data;
}
該應用程序(使用 Vue.JS、Vuex 和 Vuetify,而不是 Laravel 構建)路由到我的 Laravel 6 應用程序,我已經設置它需要使用 auth()->id()。 我希望能夠檢索 user_ID 並強制 Laravel 的身份驗證以具有該 ID 的用戶身份登錄。 我們為兩個應用程序的用戶使用同一個表,但它不稱為“用戶”。 相反,它被稱為“用戶”,我也遇到了 Laravel 6 的身份驗證問題,因為 Laravel 身份驗證專門針對名為“用戶”的表。
我如何強制 Auth 1)登錄是 Laravel 6 中具有該 ID 的用戶,以及 2)檢查表“用戶”而不是查找默認的“用戶”表?
我知道您曾經能夠在 LoginController() 中使用類似於以下內容的方法來解決它:
public function postLogin() {
$user = User::where('USER_NAME', '=', Input::get('username'))->firstOrFail();
Auth::login($user);
return redirect('home');
}
但是,這是 Laravel 5.2 的解決方案,不再有效。
請幫助我,我完全迷路了,似乎沒有人找到答案。
我解決了。 方法如下:
在我的app\User
model 中,我添加了:
protected $primaryKey = 'user_ID';
然后替換了默認的 Auth $primaryKey
,它只是'id'
。
然后我將以下 function 添加到app\Http\Controllers\Auth\LoginController
:
public function postLogin($uid) {
$user = User::where('user_ID', '=', $uid)->firstOrFail();
auth()->loginUsingId($user->user_ID);
return redirect('/home');
}
在routes\web
中,我在我的路線的 rest下方添加了以下路線:
Route::get('/{uid}', 'Auth\LoginController@postLogin');
這解決了我的問題! 我還必須在app\User
model 中自定義protected $fillable = [... ]
和protected $hidden = [... ]
arrays 中的屬性,以便它們適合我的用戶的屬性。
但這對我有用,我希望它對其他人有所幫助,感謝那些對我的問題發表評論的人,它真的激勵我更深入地挖掘並弄清楚!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.