You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中修改身份认证方式为用户名密码登录?

Laravel登录改用Username认证的Controller修改步骤

当你把登录表单的认证字段从email改成username后,需要在LoginController里做两处关键修改——因为Laravel默认的AuthenticatesUsers trait是基于email处理认证逻辑的:

  • 重写username()方法
    默认情况下,AuthenticatesUsers trait会把email作为登录标识字段,你需要在控制器中新增这个方法,告诉框架改用username:

    public function username()
    {
        return 'username';
    }
    
  • 重写validateLogin()方法
    原trait的验证规则是校验email字段,你需要替换成username的验证规则:

    protected function validateLogin(Request $request)
    {
        $request->validate([
            $this->username() => 'required|string',
            'password' => 'required|string',
        ]);
    }
    

修改后的完整LoginController代码

use Illuminate\Http\Request;
use AuthenticatesUsers;

/**
 * Where to redirect users after login.
 *
 * @var string
 */
protected $redirectTo = '/events';

/**
 * 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';
}

/**
 * Validate the user login request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return void
 */
protected function validateLogin(Request $request)
{
    $request->validate([
        $this->username() => 'required|string',
        'password' => 'required|string',
    ]);
}

额外注意:要确保你的User模型对应的数据库表中存在username字段,并且模型的$fillable属性包含username(如果需要批量赋值操作的话)。

内容的提问来源于stack exchange,提问作者marzouk najib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 12:43:29