【发布时间】:2017-12-28 19:52:19
【问题描述】:
令人惊讶的是 $this->middleware('guest')->except(['create', 'store']) 在 $this->middleware('auth')->except(['index' , '显示']);在 PostsController 上完美运行。两者在逻辑上的含义相同,那么为什么第一个不起作用?这是 PostsController:
<?php
namespace App\Http\Controllers;
use App\Post;
class PostsController extends Controller
{
public function __construct() {
$this->middleware('auth')->except(['index', 'show']);
}
public function index() {
$posts = Post::latest()->get();
return view('posts.index', compact('posts'));
}
public function show(Post $post) {
return view('posts.show', compact('post'));
}
public function create() {
return view('posts.create');
}
public function store() {
$this->validate(request(), [
'title' => 'required',
'body' => 'required'
]);
Post::create([
'title' => request('title'),
'body' => request('body'),
'user_id' => auth()->id()
]);
return redirect('/');
}
}
【问题讨论】:
-
他们都应该工作得很好。你是什么意思“这个中间件不工作而另一个工作”?是什么让你这么说?
-
@SteveChamaillard 当我使用第一个构造时,我可以从访客帐户创建一个帖子。它没有过滤掉请求。
-
回答你的问题:)
标签: php laravel laravel-5.4 middleware laravel-middleware