如何将user_id添加到Laravel中的登录参数?
How to add user_id to login parameter in Laravel?
下面是特征 AuthenticatesUsers
中的一些方法,其中 Illuminate\Foundation\Auth
、Laravel.
...
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required|string',
'password' => 'required|string',
]);
}
...
public function username()
{
return 'email';
}
最初,我的目标是在移动设备上制作另一个带有 user_id 和密码的登录表单,因此这将检查 Auth(),如果成功,它将运行一些方法并在之后自动注销。你能告诉我详细的建议吗?
补充问题。
作为Jaskaran Singh's
的建议我也添加如下。
protected function authenticated(Request $request, $user)
{
if($request->Inn == 'Inn') {
return redirect()->route('mobiles_start', ['Inn' => 'Inn']);
}
elseif($request->Ut == 'Ut') {
return redirect()->route('mobiles_destroy', ['Ut' => 'Ut']);
}
return view('welcome');
}
但如果登录失败,则会重定向回 /login
页面,而不是在上面的路由(mobiles_start 和 mobiles_destroy)中预先定义的预期视图页面。
我该怎么办?
您可以使用这样的用户 ID 登录:
if(Auth::loginUsingId($user->id)){
return response()->json(['success' => $user], $this->successStatus);
}
您不必扩展核心特征或任何核心 Laravel 代码。
在 app/Http/Controllers/Auth/LoginController.php 中添加以下函数,这将覆盖 AuthenticatesUsers 特征中的默认函数。
添加 username() 函数
public function username()
{
if(request('id')){
return 'id'; // if request contains id then return it
}
return 'email'; // else return email
}
添加 validateLogin() 函数
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required', //remove |string
'password' => 'required|string',
]);
}
就是这样。
下面是特征 AuthenticatesUsers
中的一些方法,其中 Illuminate\Foundation\Auth
、Laravel.
...
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required|string',
'password' => 'required|string',
]);
}
...
public function username()
{
return 'email';
}
最初,我的目标是在移动设备上制作另一个带有 user_id 和密码的登录表单,因此这将检查 Auth(),如果成功,它将运行一些方法并在之后自动注销。你能告诉我详细的建议吗?
补充问题。
作为Jaskaran Singh's
的建议我也添加如下。
protected function authenticated(Request $request, $user)
{
if($request->Inn == 'Inn') {
return redirect()->route('mobiles_start', ['Inn' => 'Inn']);
}
elseif($request->Ut == 'Ut') {
return redirect()->route('mobiles_destroy', ['Ut' => 'Ut']);
}
return view('welcome');
}
但如果登录失败,则会重定向回 /login
页面,而不是在上面的路由(mobiles_start 和 mobiles_destroy)中预先定义的预期视图页面。
我该怎么办?
您可以使用这样的用户 ID 登录:
if(Auth::loginUsingId($user->id)){
return response()->json(['success' => $user], $this->successStatus);
}
您不必扩展核心特征或任何核心 Laravel 代码。
在 app/Http/Controllers/Auth/LoginController.php 中添加以下函数,这将覆盖 AuthenticatesUsers 特征中的默认函数。
添加 username() 函数
public function username()
{
if(request('id')){
return 'id'; // if request contains id then return it
}
return 'email'; // else return email
}
添加 validateLogin() 函数
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required', //remove |string
'password' => 'required|string',
]);
}
就是这样。