Laravel 身份验证 - Auth::check returns 错误

Laravel Authentication - Auth::check returns FALSE

我是 Laravel 的新手,目前正在为我的项目进行手动身份验证。
我已经尝试 Auth::attempt 来验证已输入的凭据,并且我已经看到它有效,因为我在经过身份验证时被重定向到我想要的页面。

但是,当我尝试在重定向到的视图中执行 Auth::check 时,它似乎 returns FALSE 并且没有读取经过身份验证的用户。这使得该视图的特定部分不可见。对此有任何见解吗?非常感谢!

控制器

namespace App\Http\Controllers;
use DB;
use Session;
use Illuminate\Http\Request;
use Auth;    
class LoginController extends Controller
{   //    
    public function index()
    {
        return view('view_login');
    }    

    public function verify(Request $request)
    {
        $credentials = $request->only('username', 'password');    
         if (Auth::attempt($credentials)) {
            // Authentication passed...
            return redirect('dashboard');
        }
        else
        {
            return redirect('/');
        }
    }

查看

@if (Auth::check())
     <li><a href="dashboard.html"> Hello {{ Auth::user()->username }}  </a></li>
@endif 

当前结果:

预期结果:

更新: 我试过在认证后放dd(auth()->user());,我看到了认证用户的属性。但是,将它放在仪表板控制器上之后,它 returns NULL。有人可以帮我解决这个问题吗?

为什么不使用 Laravel 的验证并在函数 authenticated 中编写自己的代码。

仅供参考,需要调用函数 attemptLogin 以便用户可以登录。

实际上您的身份验证工作正常,因为您可以在用户通过身份验证时打印 hello。 如果您想阻止 未经身份验证的用户 的访问,您可以这样做。 将此函数添加为控制器的第一个函数

public function __construct()
    {
        $this->middleware('auth');
}

或者你可以在路由中查看用户

Route::get('admin/profile', function () {
    //
})->middleware('auth');

通过这种方式,只有经过身份验证的用户才能看到仪表板页面。

检查用户数据库的主键。如果您设置 table 的主键而不是 id,您需要在您的用户模型中设置它。

Laravel 文档说明如下:

Eloquent will also assume that each table has a primary key column named id. You may define a protected $primaryKey property to override this convention.

例如,如果您将 user_id 列设置为用户数据库中的主键,则需要在用户模型中放置以下代码:

protected $primaryKey = 'user_id';