laravel 如何实现接口既可以匿名访问也可以登录状态访问?-灵析社区

刘传疯子

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'), 那么未登录状态又无法访问。

阅读量:187

点赞量:0

问AI
不使用中间件,再需要的地方使用 "Auth::guard" 调用认证守护,来获取 user 信息。 参考我的另一个回答:"php - laravel 如何在不使用sanctum中间件在控制器中获取用户信息? - SegmentFault 思否" (https://segmentfault.com/q/1010000044272974) 你这里没有指定看守器,那应该就是默认的 web ,可以不传参数调用那个方法。 $user = Auth::guard()->user();