首页 > 解决方案 > 已给出实例,仍在控制器中检测其他实例

问题描述

我试图通过名为 LoginController 的控制器获取客户端 IP,但错误仍然存​​在。

传递给 App\Http\Controllers\Auth\LoginController::authenticated() 的参数 1 必须是 App\Http\Controllers\Auth\Request 的实例,给定的 Illuminate\Http\Request 实例

我已经关注了这个SO question,但仍然遇到同样的错误。


登录控制器.php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Http\Controllers\Auth\Request;

class LoginController extends Controller
{
     /**
     * The user has been authenticated.
     *
     * @param  App\Http\Controllers\Auth\Request $request
     * @param  mixed  $user
     * 
     * @return mixed
     */
    protected function authenticated(Request $request, $user)
    {
        $user->update([
            'last_login_at' => Carbon::now()->toDateTimeString(),
            'last_login_ip' => $request->getClientIp()
        ]);

        if($user->isAdmin === 1) {
            return redirect()->intended('admin');
        }
    }
}


已编辑

所以,我刚刚发现了 AuthenticatesUsers.php 这是一个特征(?)并找到了这段代码。我应该编辑这段代码吗?

/**
 * The user has been authenticated.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  mixed  $user
 * @return mixed
 */
 protected function authenticated(Request $request, $user)
 {
    //
 }

标签: phplaravel

解决方案


改变你的use陈述:

use Illuminate\Http\Request;
// Instead of
use App\Http\Controllers\Auth\Request;

您正在从接收 a而不是 a的trait覆盖此方法AuthenticatesUsersIlluminate\Http\RequestApp\Http\Controllers\Auth\Request


推荐阅读