
本文针对 Laravel 8 中使用 php artisan ui:auth 生成的认证系统,注册功能正常但登录功能失效的问题,提供了一种解决方案。通过重写 LoginController 中的 username() 方法,将认证字段从默认的 email 修改为 username,从而解决登录失败的问题。本文将详细介绍具体操作步骤,并提供相关代码示例,帮助开发者快速解决此类问题。
在使用 Laravel 8 的默认认证系统时,可能会遇到注册功能正常,但登录功能失效的问题。这通常是由于 Laravel 默认使用 email 字段进行认证,而你的应用可能使用 username 或其他字段。要解决这个问题,你需要修改 LoginController 中的 username() 方法。
修改 LoginController.php
打开 app/Http/Controllers/Auth/LoginController.php 文件,添加或修改 username() 方法,使其返回你希望用于认证的字段名。
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username()
{
return 'username';
}
}在这个例子中,我们将认证字段设置为 username。 确保你的 users 表中存在名为 username 的字段,并且在 login.blade.php 视图中, username 字段的 name 属性也设置为 username。
注意事项
总结
通过重写 LoginController 中的 username() 方法,可以轻松地将 Laravel 8 默认的 email 认证修改为其他字段,例如 username。这可以解决注册成功但登录失败的问题,并使你的应用能够使用自定义的认证逻辑。请务必根据你的应用需求,正确配置认证字段,并确保数据库和表单字段与配置一致。
以上就是Laravel 8 注册成功但登录失败的解决方案的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号