公開、公開解除、閉じるなど、アプリケーションの特定のメソッドを保護したいと考えています。保護によって、私はユーザー認証を意味するのではなく、メソッドを特定の方法で呼び出すことができます。GETではなくPOSTを使用してCakePHPのメソッドを保護する
GETではなくPOSTを使用して呼び出すメソッドを強制することを考えました。そのため、人はアドレスにURLを貼り付けることができません。しかし、これは、各メソッド呼び出しごとに異なるフォームで各ボタンをラップすることを意味します。
また、GUIDを使用してGETメソッドを許可することもできますが、正しい人のみがその機能を実行できるようにすることができます。
これに関するご意見はありますか?
function publish($id = null)
{
$post = $this->Post->find('first',array('conditions'=>array('Post.id'=>Tiny::reverseTiny($id))));
if ($this->request->is('post') || $this->request->is('put'))
{
$this->Post->id = $post['Post']['id'];
$this->Post->saveField('status', 1);
$this->Session->setFlash('Your post has been published!');
$this->redirect(array('controller'=>'posts','action'=>'view','id'=>Tiny::toTiny($post['Post']['id'])));
}
else
{
die('GET METHOD NOT ALLOWED');
}
}
をしかし、それは前述したように、この方法のためのリンク/ボタンは、このメソッドにアクションの呼び出しを含む形態であることが必要となる意味:
は、これまで私が試してみました。そして、私はいくつかの方法を持っている場合、私は私が考えている
乾杯
一つの方法は、getメソッドを許可して、ユーザーIDでログインして比較したポストのユーザIDをチェックしている...いくつかの形式が必要になりますそうですね:
if ($this->request->is('get'))
{
if($post['Post']['user_id'] != $this->Auth->user('id'))
{
$this->Session->setFlash('You don\'t have permission to edit that post!');
$this->redirect(array('controller' => 'posts', 'action' => 'index'));
}
else
{
$this->Post->id = $post['Post']['id'];
$this->Post->saveField('status', 1);
$this->Session->setFlash('Your post has been published!');
$this->redirect(array('controller'=>'posts','action'=>'view','id'=>Tiny::toTiny($post['Post']['id'])));
}
}
これはいいですか? (ここではCakePHPの2.0を仮定)
私はStackOverflow経由でたくさんのものを学んでいるので、それが私を助けている場合は、たくさんの質問をしても害はありません。人々はオンラインコミュニティでさまざまな役割を担います。私は大学の私の論文をユーザーの心理学に書いた。あなたはそれのいくつかを読んでください:) http://www.google.co.uk/search?aq = 0&oq = social + roles + in + sourceid = chrome&ie = UTF-8&q = social + roles + in + online + communities誰もが同じやり方でやりとりするわけではなく、 – Cameron