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

Laravel登录报Undefined property: Request::$email错误求助

报错核心原因

抛出Undefined property: Illuminate\Support\Facades\Request::$email错误的直接原因是控制器中Request类导入错误:你当前导入的是Request门面类,而非承载表单提交参数的HTTP请求实例类,导致依赖注入生成的$request对象无法读取表单提交的email、password等字段。
除此之外,代码中还存在两处会导致登录逻辑后续失败的隐藏问题:

  • 模型中存在路径错误的无效Request类导入
  • 认证逻辑未适配你自定义的密码字段名senha,且注册时未对密码做哈希加密,即使修复请求报错也无法通过认证校验
修复步骤
    1. 修正控制器的Request类导入
      打开app/Http/Controllers/Usuarios.php,删除顶部错误的use Request;语句,替换为正确的HTTP请求类导入,同时调整注册方法的参数注入、密码加密逻辑,避免明文存储密码。
    1. 清理模型中的无效导入
      打开app/Models/Usuario.php,删除顶部错误的use App\Models\Model\Request;语句,同时新增密码字段映射方法,让Laravel认证逻辑识别你自定义的senha密码字段。
    1. 校验前端表单字段
      确认登录页表单的邮箱输入框name属性为email,密码输入框name属性为password,和后端读取的字段名保持一致。
修正后的完整代码

控制器 Usuarios.php

<?php

namespace App\Http\Controllers;


use App\Models\Usuario;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;


class Usuarios extends Controller
{
    public function cadastrar(Request $request)
    {
        $dados = $request->all();
        // 注册时对密码做哈希加密,禁止明文存储
        $dados['senha'] = Hash::make($dados['senha']);
        $usuario = new Usuario($dados);
        $usuario->save();
        return redirect('/')->with('mensagem_sucesso', 'Cadastro efetuado com sucesso!');

    }

    public function index()
    {
        return view('layout/cadastrousuario');
    }

    public function indexlogin()
    {
        return view('layout/login');
    }

    public function logar(Request $request)
    {

        if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) {
            dd('voce esta logado');
        } else {
            dd('voce nao esta logado');
        }

    }

}

模型 Usuario.php

<?php

namespace App\Models;

use DB;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Support\Facades\Hash;

class Usuario  extends Authenticatable
{

    protected $table = 'usuario';
    public $timestamps = false;

    protected $fillable =
        array(
            "codigo",
            "nome",
            "email",
            "apelido",
            "senha",
            "bloqueado",
            "saldo",
            "saldo_atual",
            "admin"
        );

    /**
     * 重写密码获取方法,映射数据库自定义的senha密码字段
     */
    public function getAuthPassword()
    {
        return $this->senha;
    }

    use HasFactory;
}

注意:修复代码前已经注册的用户,因为密码是明文存储的,无法通过哈希校验,需要重新注册或手动将对应账号的senha字段值替换为Hash加密后的密文,才能正常登录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:39:20