簡體   English   中英

Laravel 6.x 通過從 Axios 調用獲取當前用戶來設置 auth()->user()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM