Php 限制控制器的某些页面

Php 限制控制器的某些页面,php,laravel,laravel-5,Php,Laravel,Laravel 5,我使用的是Laravel 5,我希望允许某些页面由来宾查看,或者在控制器中供公众查看 它的工作原理是这样的:每个用户都可以注册并创建一些帖子。主页将显示所有用户的所有帖子。因此,后置控制器将具有如下功能: public function __construct(Post $post, User $user) { $this->middleware('auth'); $this->post = $post; $this->user = $user; }

我使用的是Laravel 5,我希望允许某些页面由来宾查看,或者在控制器中供公众查看

它的工作原理是这样的:每个用户都可以注册并创建一些帖子。主页将显示所有用户的所有帖子。因此,后置控制器将具有如下功能:

public function __construct(Post $post, User $user)
 {
    $this->middleware('auth');
    $this->post = $post;
    $this->user = $user;
 }

public function index()
 {
    $posts =  \Auth::user()->posts;
    return view('posts.index', compact('posts'));
 }

public function show($id)
 {
    //return "Post Listing";
    $post = $this->post->where('id', $id)->first();
    return view('posts.show', compact('post'));
 }
我可以继续列出create函数等等,但我希望公众不需要注册就可以看到show函数或show页面。这是可能的,还是我必须重新设计应用程序

该应用程序的设置是,一旦登录,用户可以在单独的页面上查看自己的帖子。但无论是否登录,主页都会显示所有帖子

我可以有这样的$posts=$this->post->orderBy'id',DESC'->get;显示所有帖子,但效果不好

***编辑****


我需要显示用户名等:$posts=\Auth::user->posts

如果我正确理解你的问题 你可以这样做

$this->middleware('auth',['except'=>['index','show']]);

你好虽然我知道你要去哪里,但在我的情况下,你部分是正确的。问题在于$posts=\Auth::user->posts;用于显示所有帖子,但我得到:无法访问非objectok上的属性。那么,您是否在用户模型中定义了帖子关系?您需要先定义它,然后才能在索引中的用户模型上调用->posts,您可以执行$posts=\Auth::check吗\Auth::user->posts:$this->post->get;