从Laravel 5.2升级到5.3时,在登录时出现“方法[用户名]不存在”的错误。

7

最近我将Laravel从5.2升级到5.3后,无法登录我的应用程序。

在进行简单的登录时,我收到以下错误信息:BadMethodCallException in app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php line 82

方法[username]不存在

我发现这是由于ThrottlesLogins引起的。如果我从AuthController中删除名为ThrottlesLogins的Trait,则可以正常工作。

方法[username]来自于ThrottlesLogins Trait,位于:

protected function throttleKey(Request $request)
{
    return Str::lower($request->input($this->username())).'|'.$request->ip();
}

1
我已经在我的 AuthController 中添加了这个方法:public function username() { return 'email';}。这样做正确吗? - Tudor-Radu Barbu
2个回答

1

该框架提供的两个默认身份验证控制器已被拆分为四个较小的控制器。此更改默认提供了更清晰、更专注的身份验证控制器。将每个控制器从GitHub获取并放置到应用程序中是升级应用程序到新身份验证控制器的最简单方法。

您还应确保在routes/web.php文件中调用Auth::routes()方法。此方法将为新身份验证控制器注册正确的路由。

一旦这些控制器被放置到您的应用程序中,您可能需要重新实现对这些控制器所做的任何自定义。例如,如果您正在自定义用于身份验证的身份验证守卫,则可能需要覆盖控制器的guard方法。您可以检查每个身份验证控制器的trait以确定要覆盖哪些方法。

将laravel 5.2升级到5.3


0

你是否已经拆分了Auth控制器并调用了新的路由?如果没有,请前往这里,将那些控制器复制到你的应用程序中的app/Http/Controllers/Auth目录下,然后在你的routes/web.php文件中确保你正在调用Auth::routes(),这就是全部需要做的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接