私は、楽しくて教育的な目的のために、厳密にカスタム フレームワークに取り組んでいます。アクセス許可の実装方法に関するこの質問を読みましたが、答えが気に入っています。デコレータ パターンを使用するか、ディスパッチャーからの URL に基づいてパーミッションをチェックします。
私の質問は、アクセス許可のホワイト リストをどのように生成する必要があるかということです。コントローラー内のすべてのメソッドに実行許可を要求したくないので、たとえば、メソッド名の前に「x」を付けるなどの特別な命名規則を使用できます。
class CalendarController
{
public function index($year = null, $month = null, $day = null)
{
// display calendar (no permission needed)
}
public function xAddEvent()
{
// display form to add event (permission required)
}
public function xAddEventSubmit()
{
// submit form to add event (permission required)
}
}
次に、すべてのコントローラーを反復処理して x-method を返すスクリプトを作成し、さまざまなロールに割り当てるアクセス許可のリストを取得できます。
別のオプションとして、各コントローラーのプロパティとしてアクセス許可をハードコードすることもできます。次に例を示します。
class CalendarController
{
public $permissions = array('addEvent',
'addEventSubmit');
public function index($year = null, $month = null, $day = null)
{
// display calendar (no permission needed)
}
public function addEvent()
{
// display form to add event (permission required)
}
public function addEventSubmit()
{
// submit form to add event (permission required)
}
}
より良い代替手段はありますか、それとも正しい軌道に乗っていますか?