Php Laravel Auth::user()->;名称和身份验证::user()->;身份证不起作用

Php Laravel Auth::user()->;名称和身份验证::user()->;身份证不起作用,php,laravel,Php,Laravel,嗨,我正在数据库中存储数据,但当我使用Auth::user()->name时,它不起作用。在我的另一个控制器中,它正在工作。但是当我硬编码名字和id时,它就工作了。我已经导入了auth,但仍然得到相同的问题。谢谢你的帮助。这很奇怪 namespace App\Http\Controllers; use Illuminate\Http\Request; use App\ForumPost; use Auth; public function create_d

嗨,我正在数据库中存储数据,但当我使用
Auth::user()->name
时,它不起作用。在我的另一个控制器中,它正在工作。但是当我硬编码名字和id时,它就工作了。我已经导入了auth,但仍然得到相同的问题。谢谢你的帮助。这很奇怪

 namespace App\Http\Controllers;

    use Illuminate\Http\Request;
    use App\ForumPost;
    use Auth;


    public function create_discussion(Request $request){ 

        $create = new ForumPost ; 
        $create->post_content = $request->content;
        $create->user_name = Auth::user()->name;
        $create->comment_frequency = 100;
        $create->user_id = Auth::user()->id;
        $create->save();

        return response()->json([
            'message' => 'Discussion created successfully '
        ]);
    }

顺便说一句,我正在使用vue作为前端。

请确保您已登录。 用这个

auth()->user()->name;
auth()->id();
都一样。 如果出现错误500,请检查.env是否存在,然后重试

php artisan key:generate
php artisan cache:clear 
php artisan config:clear

如果您不是经过身份验证的用户,则
Auth::user()->id
将无法工作。 在之前执行一次
Auth::check()
,以确保您已正确登录:

public function create_discussion(Request $request){ 

    if(Auth::check()){
          $create = new ForumPost ; 
          $create->post_content = $request->content;
          $create->user_name = Auth::user()->name;
          $create->comment_frequency = 100;
          $create->user_id = Auth::user()->id;
          $create->save();

          return response()->json([
                'message' => 'Discussion created successfully '
          ]);
     } else {
         return response()->json([
                'message' => 'You are not authentic user. '
         ]);
    }
}

在创建论坛之前,您可以执行auth()->check()

这可能有用。

您需要导入/添加

use Auth;
use App\User;
然后在控制器中将登录用户另存为:

public function create_discussion(Request $request, $id){ 

    $create = new ForumPost ; 
    $create->post_content = $request->content;
    $create->user_name = auth()->user()->name;
    $create->comment_frequency = 100;
    $create->->user_id = auth()->user()->id;
    $create->save();

    return response()->json([
        'message' => 'Discussion created successfully '
    ]);
}

这是拉威尔7.14的。您没有在函数中传递id。

我创建了一个道具并将其传递给我的post请求,从而使其正常工作。我不知道为什么那个auth()->user()->。。。。不起作用。我认为这将是一个问题,当项目。越来越大。感谢您在控制器中使用的答案

让用户访问您的控制器。。控制器头中的用户身份验证

use Auth;
use App\User;
从以下位置获取用户id:

Auth::id();
从中获取用户名

Auth::user()->name;

您如何使用vue验证您的应用程序?请显示您的路由文件。我没有在api路由中使用任何身份验证。我只想获取当前的blogged in用户名和IDI如果您没有对路由使用身份验证,那么如何才能成为经过身份验证的用户?你是说有一个用户登录了你的web路由,但它没有显示在你的api路由上吗?
如果(Auth::check()){/*用户经过身份验证并且可以访问*/}
或者更好
如果(!Auth::check()){abort(403,'未经授权的操作');}
Hi sir我添加了身份验证检查,但它会命中else语句,即用户未通过身份验证。但用户已登录。我的另一个问题是,如果用户已登录,是否意味着该用户已通过身份验证?是,登录用户已通过身份验证。谢谢。用户已登录,但其命中else语句idk why.Api routes is具有默认身份验证中间件权限?因此,首先,如果im没有登录,它不会将我重定向到控制器方法。但它会点击controller方法,这意味着我已登录,但当我使用auth()->id时。。。它不工作,它的响应是错误500谢谢你的回答我已经导入了用户模型和身份验证,并执行了你上面键入的操作,但仍然错误500内部服务器错误。请检查你的模型。添加保护并填充它。这是500错误的原因之一。如果不起作用,请怀疑控制器、模型和刀片文件。我使用$guarded=[]仍然不起作用。用户已经登录,这意味着我可以使用auth()->func,但仍然无法使用idk。为什么会发生这种情况。您使用的是api路由吗??如果您需要指定api防护。试试auth('api')->user(),也许它会工作的。谢谢我通过添加道具而不是使用auth来让它工作。我也尝试过这个命令,但仍然不起作用。
Auth::user()->name;