laravel的一个问题,我简化了一下是这样。
我想让访问接口 /a,未登录状态访问返回 0, 登录状态下返回 1,如何实现?
正常是这样。topic 状态为 1 时可以任何人访问,状态未 2 时,只有作者可以访问。
// route.php
Route::get('/topics/{topic}', [\App\Http\Controllers\Api\TopicController::class, 'show'])
// controller
$this->authorize('view', $topic);
// TopicPolicy
return $topic->status == 1 || $topic->user_id == $user->id;
上边这种情况,无论登录与否,$user 都是 null。
如果 route 加上 middleware('auth'), 那么未登录状态又无法访问。
不使用中间件,再需要的地方使用
Auth::guard
调用认证守护,来获取 user 信息。参考我的另一个回答:php - laravel 如何在不使用sanctum中间件在控制器中获取用户信息? - SegmentFault 思否
你这里没有指定看守器,那应该就是默认的 web ,可以不传参数调用那个方法。