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 = [ ... ]
数组中的属性,以便它们适合我的用户的属性。
但这对我有用,我希望它能帮助其他人!感谢那些对我的问题发表评论的人,它真的激励我深入挖掘并弄清楚!
我正在与一个团队合作,我们在该团队中构建了一个已经具有用户登录身份验证的应用程序。它存储当前用户的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 = [ ... ]
数组中的属性,以便它们适合我的用户的属性。
但这对我有用,我希望它能帮助其他人!感谢那些对我的问题发表评论的人,它真的激励我深入挖掘并弄清楚!