如何在ControllersLaravel 8+中获取User-> id

问题描述

我正在尝试通过 user('id')选择任务,但是无法在 Controller 中从 DB 。 我已经尝试了很多方法,其中一些方法来自 stackoverflow ,但是它不起作用。

我尝试过:

1. $userId = Auth::check() ? Auth::id() : true;
2. Auth::user()->id;
3. public function getUserId(){
   
   on Model} - and then get this value on Controllers

和其他一些东西

我有最简单的代码

  1. 我安装了注册:npm artisan ui --auth诸如此类的
  2. 我在Laravel上安装了vuejs
  3. 我在Laravel上创建了api,并在vue上创建了一些逻辑

我没碰过“ app.blade.PHP ”。它与以前一样。

我可以在文件 app.blade.PHP ”中获取数据,用户名称,ID以及我想要的所有内容,但我需要在 folder-> file 中使用这些数据>: App \ Http \ Controllers {{SomeController}} ,但我不知道如何。

在这种情况下有人吗? 如何在Controller中获取用户ID?

谢谢大家。

解决方法

如果您需要用户 ID,只需使用其中之一:

auth()->id();

使用 Auth 门面

\Auth::id();

或者,使用请求实例

$request->user()->id

按照这个简单的控制器代码,我在这里展示了 3 种不同的方式:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class SomeController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function getUserId(Request $request)
    {
        $user = Auth::user(); // Retrieve the currently authenticated user...
        $id = Auth::id(); // Retrieve the currently authenticated user's ID...

        
        $user = $request->user(); // returns an instance of the authenticated user...
        $id = $request->user()->id; // Retrieve the currently authenticated user's ID...

        
        $user = auth()->user(); // Retrieve the currently authenticated user...
        $id = auth()->id();  // Retrieve the currently authenticated user's ID...
    }
}
,
Auth::user()->id;

如果您在尝试获取该控制器方法的那个控制器方法上具有Auth中间件,则此方法应该起作用,请检查是否添加了该中间件。 要检查,可以使用php arisan route:list命令。

,

有人还在搜索这个问题的答案吗?我有一些解释,您该怎么做。

Laravel 有一个 Router ,它可以通过您想要的 Controller 路由授权过程,因此您应该在上重定向该过程路由器,并在控制器中创建构造函数,它允许您获取用户ID

您该怎么做?:

1 。首先,您应该找到负责授权和注册用户的 Controller Route 。 就我而言: a) App \ Http \ Controllers \ HomeController b) routes \ web.php

2 。其次,您应该将您的授权 Router 重定向到 Controller ,您在此处尝试获取 Auth :: id(); 就我而言: App \ Http \ Controllers \ TasksController

所以,在 routes \ web.php 中,我这样做了:

    //was
Route::get('/',[App\Http\Controllers\HomeController::class,'index'])->name('home');
    //was
    Auth::routes();
    //was
    Route::get('/home','index'])->name('home');
    //added
    Auth::routes();
    //added
    Route::get('/home',[App\Http\Controllers\TasksController::class,'index'])->name('home');

也许您应该在该控制器

上具有索引功能

3 。第三,您应该在要获取用户ID 控制器中添加构造函数,这是我从 HomeController ,它已经在那里。 就我而言,是:

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

在我的 TasksController 上具有功能的代码:

    public function __construct()
    {
        $this->middleware('auth');
    }
       
    public function index()
    {              
        $userId = Auth::check() ? Auth::id() : true;       
    }

现在我可以获取用户ID。 PS:我在Controller中TasksController类的顶部添加的构造器