是否可以在未经身份验证的路由上使用Auth :: user()?

问题描述 投票:0回答:2

这确实很容易,但是我在Laravel方面没有很多经验,而且我一直在寻找和尝试,没有运气。

我正在开发一个现有项目,并且它的某些路由使用auth:api中间件,例如:

Route::group(['namespace' => 'Api', 'prefix' => 'api', 'middleware' => 'auth:api', 'throttle:100,1'], function () {

    // Route.....

});

在这些路由的任何控制器中,Auth :: user()都可以正常工作,并返回已登录的用户实例。到目前为止,一切都很好。

现在,我还有另一套路由是公用的,因此它们不使用auth:api中间件。但是,已登录的用户也可以访问这些路由,并且基于此条件(无论是否已登录),我想运行其他逻辑。综上所述,登录页面和公共用户均可访问该页面。但是如果用户已登录,我们将运行其他逻辑。但是,当我尝试使用Auth::user()时,它返回null,而auth()->check()返回false。

请记住,我不能使用auth中间件,因为这将限制公共用户访问页面,这不是我们所需要的。

php laravel
2个回答
0
投票

或者,您可以通过Illuminate \ Http \ Request实例访问经过身份验证的用户。

解释

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller
{
    /**
     * Update the user's profile.
     *
     * @param  Request  $request
     * @return Response
     */
    public function update(Request $request)
    {
        // $request->user() returns an instance of the authenticated user...
    }
}

检查Documentation


0
投票

如果用户有需要认证的信息,可以在用户请求路由时手动认证用户。如果他不这样做,那么您可以对未经身份验证的用户使用您的逻辑。

https://laravel.com/docs/5.7/authentication#authenticating-users

© www.soinside.com 2019 - 2024. All rights reserved.