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 的用户身份登录。我们为两个应用程序的用户使用相同的 table,但它不是 'users'。相反,它被称为 'User',我在 Laravel 6 的身份验证方面也遇到了麻烦,因为 Laravel Auth 专门查找名为 'users' 的 table。

我如何强制 Auth 1) 登录是 Laravel 6 中具有该 ID 的用户,以及 2) 检查 table 'User' 而不是查找默认 'users' table?

我知道您曾经能够在 LoginController() 中使用类似于以下内容的方法来解决它:

public function postLogin() {
$user = User::where('USER_NAME', '=', Input::get('username'))->firstOrFail();
    Auth::login($user);

    return redirect('home');
}

但是,这是 Laravel 5.2 的解决方案,不再有效。

请帮助我,我完全迷路了,似乎没有人找到答案。

我解决了。方法如下:

在我的 app\User 模型中,我添加了:

protected $primaryKey = 'user_ID';

然后替换了默认的 Auth $primaryKey,它只是 'id'

然后我在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 中,我在 下方 我的其余路线中添加了以下路线:

Route::get('/{uid}', 'Auth\LoginController@postLogin');

这解决了我的问题!我还必须自定义 app\User 模型中 protected $fillable = [ ... ]protected $hidden = [ ... ] 数组中的属性,以便它们适合我的用户的属性。

但这对我有用,我希望它能帮助其他人!感谢那些对我的问题发表评论的人,它真的激励我深入挖掘并弄清楚!