現在投稿した記事を編集できる機能を作成しているのですが、記事編集画面の作り方でどうしようかと悩んでいます。
まず記事画面に以下のような編集ボタンがあります。
html
1<a href="/edit-post/{{ $article->id }}" class="btn btn-success">編集</a>
このボタンを押すと以下のルーティングの通りにControllerのメソッドを呼びます。
php
1Route::get('/edit-post/{id}', 'PostController@edit');
そして該当のControllerのメソッドは以下のようになっており、記事編集画面が表示されます。
なお、記事編集画面は記事投稿画面を再利用しています。
php
1 public function edit($id) { 2 $article = DB::table('articles')->where('id', $id)->first(); 3 return view('post', ['isEditing' => true, 'article' => $article]); 4 }
必要な記事情報と共に記事編集画面が表示されるのはいいのですが、アドレスバーに「/edit-post/任意の数字」と打つと他人の記事が編集できてしまいます。
なので/edit-post/*のURLの直接入力によるアクセスを禁止したいのですが、どうすればいいでしょうか?
また、試しに以下のように擬似フォームメソッドでアクセスするとURLの直接入力でのアクセスを禁止できたのですが、PUTを使っているのに画面を表示させているのは設計上よろしくないでしょうか...?
php
1<form action="/edit-post" method="POST"> 2 <input type="hidden" name="_method" value="PUT"> 3 <input type="hidden" name="_token" value="{{ csrf_token() }}"> 4 <input type="hidden" name="id" value="{{ $article->id }}"> 5 <input type="submit" value="編集" class="btn btn-success"> 6</form>
ルーティングは以下のような感じで、Controllerで記事情報を取得して記事編集画面を表示しているだけです。
php
1Route::put('/edit-post', 'PostController@edit');
このように記事編集画面を作る際、どのようにすればいいでしょうか?
どなたか分かる方がいれば教えていただきたいです。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/28 13:28
2018/03/01 09:24
2018/03/01 13:25