讨论 Laravel社区 laravel 如何实现接口既可以匿名访问也可以登录状态访问?

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

小晨晨 发表于    阅读:58    回复:1

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 信息。

你这里没有指定看守器,那应该就是默认的 web ,可以不传参数调用那个方法。

$user = Auth::guard()->user();
 
1
我来评论
QQ
微信