【问题标题】:How to call Auth::id() in controllers for front end如何在前端控制器中调用 Auth::id()
【发布时间】:2017-10-22 08:01:12
【问题描述】:

我正在尝试在我的前端控制器中调用我的用户 ID。后台 Auth::id() 就像一个魅力,但是当我尝试在我的后台控制器中调用它时,我收到一个错误,即我的 user_id 不能为空。这意味着 Auth::id() 似乎不起作用。所以看起来 Laravel 只能识别后台登录的用户,我不知道为什么。

这是我的前端控制器的存储功能:

 public function store(Request $request)
    {
        $optionElection = new OptionElection();
        //this returns null
        $optionElection->user_id = Auth::id();
        // this also returns null 
        $optionElection->option = Auth::name();
        $optionElection->votes = 0;
        $optionElection->election_id = $request['election_id'];
        $optionElection->accepted = 0;

        if ($optionElection->save()) {


            return response()
                ->json($optionElection);

        }

    }

当我尝试存储数据时,我总是检查我是否已使用 Laravel Auth 在后台登录。

【问题讨论】:

    标签: php laravel authentication controller vue.js


    【解决方案1】:

    你试过\Auth::id()。 ? 我认为这应该可行。

    【讨论】:

      【解决方案2】:

      如果用户主动登录并且控制器方法使用auth 中间件包装,这些帮助方法将仅检索经过身份验证的用户或 id。如果不是,它们只会返回 null。

      \Auth::id();
      
      auth()->id();
      

      【讨论】:

      • 他们仍然返回 null。这很奇怪,因为我登录后助手确实在我的后台工作,但他们不在前端(这也是用 laravel 控制器制作的)
      • @hxwtch 你能运行php artisan route:list 并在这里发布结果吗?我想检查方法上的中间件。
      • 当然!我在这里上传了它们:ibb.co/mAOgiFibb.co/kH8E3F
      • @hxwtch 除了一个api路由,其他路由没有auth中间件。您如何执行身份验证?
      • 我有一个函数可以做到这一点:Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user( ); });那可能就是你的意思。我应该如何执行我的身份验证?
      【解决方案3】:

      $user = auth()->user();

      然后

      $optionElection->user_id = $user->id;

      【讨论】:

      • 这会给出错误“尝试获取非对象的属性”
      猜你喜欢
      • 1970-01-01
      • 2015-10-13
      • 2021-09-27
      • 1970-01-01
      • 2011-01-15
      • 2019-11-07
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      相关资源
      最近更新 更多