如果用户未登录,如何在 Laravel 中检索有限记录,如果用户已登录,如何检索所有记录?

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

我有一个 Laravel 路由,我想根据用户是否登录来进行不同的处理。如果用户未登录,我只想在控制器中检索 5 条记录(限制 5 条)。如果用户已登录,我想检索所有记录。

这是我目前的路线:

Route::get('/test', 'TestApiController@index');

当我为我的路由设置 middleware('auth') 时,响应将是 401 Unauthorized,但我想为这种情况获取有限的记录。我怎样才能修改路线和控制器来实现这一目标?另外,如何检查用户是否登录?

这是我当前的控制器代码:

class TestApiController extends Controller
{
    public function index()
    {
        if (auth()->check()) {
            $data = Test::all();
        } else {
            $data = Test::limit(5)->get();
        }
        return response()->json($data);
    }
}

我想我需要从请求头中获取身份验证参数来检查用户是否登录:

$request->header('Authorization')

如何修改我的代码以实现所需的功能?谢谢。

我尝试 when 或 middlewareIf 和 middleware(function ($request, $next),

但他们不工作..

laravel routes authorization middleware
1个回答
0
投票

看起来你在那里混合了一些概念。

你的路线看起来像一个 API 路线,它使用 'api' 守卫而不是网络。当你打电话给

auth()->check()
时,它得到了“网络”守卫。

知道这一点,你的控制器应该是这样的:

class TestApiController extends Controller
{
    public function index()
    {
        if (auth('api')->check()) {
            $data = Test::all();
        } else {
            $data = Test::limit(5)->get();
        }
        return response()->json($data);
    }
}

您可以在 Laravel 身份验证 文档中阅读更多信息。

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