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

Laravel auth()与attempt()助手函数登录验证失效问题

Laravel 登录认证持续返回「Invalid login details」问题

问题现象

  • 用户注册功能可正常将数据写入数据库
  • 登录操作始终返回Invalid login details错误提示
  • 先后替换!auth()->attempt($request->only('email','password'))、!Auth::attempt两种写法均无法解决,无法定位错误原因

项目相关代码

LoginController 代码

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class LoginController extends Controller
{
    public function __construct(){
        $this->middleware(['guest']);
    }
    public function login(){
        return view('login.login');
    }
    public function logindetails(Request $request){
        request()->validate([
            'email' => 'required|email',
            'password' => 'required'
        ]);

        if(!auth()->attempt($request->only('email','password'))){
           return back()->with('status','Invalid login details');
        }

        return redirect('home');
    }                                                     
}

login.blade.php 视图文件代码

<html>
<head>
</head>
<body>
@if(session('status'))
<article style="color:red;">{{ session('status') }}</article><br>
@endif
<form method="post" action="\logindetails">
@csrf
<input type="text" name="email" placeholder="email" @error('email') style="border-color:red;" @enderror value="{{ old('email') }}"><br>
@error('email') {{$message}} <br> @enderror 
<input type="password" name="password" placeholder="password" @error('password') style="border-color:red;" @enderror><br>
@error('password') {{$message}} <br> @enderror
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>

web.php 路由文件代码

<?php

use App\Http\Controllers\AdminController;
use App\Http\Controllers\LoginController;
use App\Http\Controllers\LogoutController;
use App\Http\Controllers\RegisterController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});
Route::get('/home',[AdminController::class,'index']);
Route::get('/add',[AdminController::class,'add'])->middleware('auth');
Route::post('/addpost',[AdminController::class,'addpost']);
Route::get('/edit/{post}',[AdminController::class,'edit']);
Route::post('/editpost/{post}',[AdminController::class,'editpost']);
Route::get('/delete/{post}',[AdminController::class,'deletepost']);
Route::post('/logout',[LogoutController::class,'logout']);
Route::get('/login',[LoginController::class,'login'])->name('login');
Route::post('/logindetails',[LoginController::class,'logindetails']);
Route::get('/register',[RegisterController::class,'register']);
Route::post('/registerdetails',[RegisterController::class,'registerdetails']);

问题排查与修复方案

核心原因(90%概率):注册时密码未做哈希处理

Laravel 自带的attempt()认证逻辑,会自动对前端传入的明文密码做 bcrypt/argon2 哈希计算,再和数据库中存储的密码哈希值做比对。如果注册逻辑中直接把明文密码存入数据库,哈希值和明文永远无法匹配,就会持续返回认证失败。

修复方式:检查RegisterController的registerdetails方法,创建用户时必须对密码字段做哈希处理:

// 错误写法(直接存明文)
User::create([
    'email' => $request->email,
    'password' => $request->password,
    // 其余字段
]);

// 正确写法
User::create([
    'email' => $request->email,
    'password' => bcrypt($request->password), // 也可使用Hash::make($request->password)
    // 其余字段
]);

如果之前已经存入了明文密码的测试用户,直接删除该用户重新走注册流程即可。

其余排查点

  • 检查app/Models/User.php模型:确认$fillable批量赋值白名单中包含email和password字段,避免密码字段未被正确写入数据库;确认模型中没有为password字段设置多余的修改器/访问器篡改字段值。
  • 检查数据库users表结构:password字段长度至少设置为60位(推荐设为255位),长度不足会导致哈希值被截断,比对失败。
  • 修正现有代码的不规范写法:
    1. LoginController的验证逻辑统一使用注入的$request实例,把request()->validate()改为$request->validate(),避免多请求实例不一致的潜在问题。
    2. 视图中表单action的反斜杠为多余字符,把action="\logindetails"改为action="/logindetails",或使用action="{{ url('/logindetails') }}"避免路由匹配异常。
    3. 认证通过后建议添加$request->session()->regenerate();逻辑,修复会话固定风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:45:33