Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel身份验证-Auth::check返回FALSE_Php_Laravel_Laravel 5.6 - Fatal编程技术网

Php Laravel身份验证-Auth::check返回FALSE

Php Laravel身份验证-Auth::check返回FALSE,php,laravel,laravel-5.6,Php,Laravel,Laravel 5.6,我对Laravel相当陌生,目前正在为我的项目进行手动身份验证。 我已经尝试了Auth::trunt来验证输入的凭据,并且我已经看到了它的工作原理,因为我在验证时被重定向到我想要的页面 但是,当我尝试在重定向到的视图中执行Auth::check时,它似乎返回FALSE,并且不读取经过身份验证的用户。这使得该视图的某些部分不可见。对这个有什么见解吗?非常感谢 控制器 namespace App\Http\Controllers; use DB; use Session; use Illuminat

我对Laravel相当陌生,目前正在为我的项目进行手动身份验证。
我已经尝试了
Auth::trunt
来验证输入的凭据,并且我已经看到了它的工作原理,因为我在验证时被重定向到我想要的页面

但是,当我尝试在重定向到的视图中执行
Auth::check
时,它似乎返回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())
  • @恩迪夫
    当前结果:

    预期结果:

    更新:
    我试着把
    dd(auth()->user())在身份验证之后,我已经看到了经过身份验证的用户的属性。但是,在将其放在仪表板控制器上之后,它将返回NULL。有人能帮我一下吗?

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


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

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

    public function __construct()
        {
            $this->middleware('auth');
    }
    
    或者,您可以在路由中检查用户

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

    通过这种方式,经过身份验证的用户可以查看仪表板页面。

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

    Laravel文件说明了以下内容:

    Eloquent还将假定每个表都有一个名为id的主键列。您可以定义一个受保护的$primaryKey属性来覆盖此约定。

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


    protected$primaryKey='user_id'

    它应该可以工作,代码中没有问题。如果视图缓存在php artisan视图中,请使用此命令:clearI试图清除它,但不幸的是,它仍然没有显示在视图中尝试此操作:auth()->check()或\auth::check()似乎仍然不起作用。☹️验证后,是否转到仪表板页面?并删除控制器顶部的行:使用Auth;然后再试一次。它会进行身份验证并转到仪表板页面,但是,带有if条件的视图的某些部分仍然没有显示我没有任何错误。我在问题中添加了图像,以显示我的预期结果和当前结果。您好,“Hello User”是我想要的,也是我期望的,但是,在验证后,它当前没有显示,如另一个图像中所示。
    Route::get('admin/profile', function () {
        //
    })->middleware('auth');