basercms icon indicating copy to clipboard operation
basercms copied to clipboard

【システム】beforeFilterの記述方法によってはアクセス制限が行われない問題の改善

Open seto1 opened this issue 7 months ago • 1 comments

baserCMS version : 5

https://baserproject.github.io/5/plugin/develop_plugin#beforefilter-%E5%88%A9%E7%94%A8%E6%99%82%E3%81%AE%E6%B3%A8%E6%84%8F%E7%82%B9

beforeFilter 利用時の注意点 beforeFilter メソッドは、アクションが実行される前のタイミングで処理を入れるのに都合がよいメソッドですが、baserCMSで利用する場合には注意が必要です。

メソッド内にて親メソッドを呼び出すことが前提になりますが、戻り値を必ずリターンで返却するようにしてください。これは、親メソッド内にて、アクセス制限の判定を行っていて、アクセス不可と判定された場合に、Response クラスが戻ってくるのですが、これを返却しないと呼び出し対象となるアクションが実行されてしまうからです。

  • 改善案を調査
  • 案1
    • 現在はAppControllerやBcAdminAppControllerのbeforeFilterで、権限がない場合にresponseを返却している
    • そうではなくRedirectExceptionをスローする
      • https://qiita.com/hoogee/items/ff5a3be1a0d660805fae
      • https://api.cakephp.org/5.0/class-Cake.Http.Exception.RedirectException.html

seto1 avatar May 16 '25 02:05 seto1

@seto1 RedirectException 良さそうですね、こちらに変更しましょうか。

ryuring avatar May 16 '25 07:05 ryuring