laravel 如何让一个 controller method 既可以匿名访问,也可以身份认证后访问?

举例:
一篇新闻,匿名用户可以正常访问,已登录用户访问后会记录阅读历史。

这种情况下路由该怎么写的?

Route::middleware('guest')->group(function () {
    Route::get('/news/{news}', [\App\Http\Controllers\Api\NewsController::class, 'show']);
});
阅读 2.2k
1 个回答

路由应该是这样的:

Route::get('/news/{news}', [\App\Http\Controllers\Api\NewsController::class, 'show']);

NewsController :


use Illuminate\Support\Facades\Auth;

public function show(News $news)
{
    if (Auth::check()) {
        // 用户已经登录,记录阅读历史
        $user = Auth::user();
        // 记录用户的阅读历史,这取决于你的实现
        // $user->recordRead($news);
    }

    // 显示新闻
    return view('news.show', ['news' => $news]);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进