如何将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',
    ]);
}

就是这样。