見我之前發(fā)過的pr: https://github.com/walkor/webman-framework/pull/39/files
調(diào)用控制器的action前,檢測控制器是否存在約定名稱的初始化方法。
靠中間件去處理,有中間件執(zhí)行順序的問題。
比如使用action-hook處理。
protected $admin;
public function beforeAction(Request $request)
{
$this->admin = session('admin_user');
if (!in_array($this->admin['role_id'], [1, 2])) {
//特殊角色處理
}
}
我另外使用了一個中間件處理權限驗證,正常情況來講,如果action-hook中間件在我中間件后面的話,
$this->admin = session('admin_user');
這句是可以拿到當前管理員用戶的。
但如果action-hook
在我權限驗證中間件之前執(zhí)行了,用戶未登錄時這里直接就報錯了。
如果我在這里加上if(!$this->admin){}
判斷,那我另外的中間件就是多余的了,直接把權限驗證放在beforeAction
里面做。
而且還會陷入一個怪圈,就是那種寫個baseController
,然后其的所有控制器去繼承它。
另外,別告訴我修改config/middleware.php
調(diào)整中間件順序之類的。我寫個插件做的權限驗證。