分析 Auth(4)--Authorization
前面我們看完了驗證(Authenticate)的實作,今天來看授權(Authorization)。
前面我們看完了驗證(Authenticate)的實作,今天來看授權(Authorization)。
之前在分析套件都是只有在看 Laravel 原始碼,沒有任何客製化的範例,而今天會來示範如何客製化驗證機制。
透過 AuthManager 取得 SessionGuard 實例,接著在 Authenticate Middleware 會呼叫 check()
方法驗證。
Auth 在 Laravel 開放的 Illuminate 套件包裡(Support 除外),可能是前三名複雜的。
昨天了解 Facade 基本原理後,可能會覺得奇妙的關鍵不過就是 Magic Method 而已,但其實 Laravel 還有更神奇的。
Laravel 的 Facade 是個很神奇的設計。使用的時候是靜態呼叫,但實質上是對某個實例呼叫。也因這個特性,所以有辦法做測試替身(Test Double)。
到就目前所知,Middleware 是由 Pipeline 實作的,而程式裡出現 Pipeline 有兩次。一次是 Global middleware,也就是 Http Kernel 所寫的這段程式碼:
繼續昨天的 runRoute()
。