Laravel框架對於訪問鑒權,提供了兩套機制,分別是:
1、Authentication:用來對路由進行保護,換句話說,它決定了一個請求是否可以訪問某個頁面或者某個接口。
2、Authorization:用來對具體的操作進行保護,它決定了一個用戶是否有權限對某個具體的資源進行操作,比如讀取或者修改。
Authentication
本質上,Laravel的訪問權限控制,是基於其middleware切片機制實現的。其核心是一個特殊的middleware,名字叫做auth。在auth這個middleware里面,通過不同的guard來實現不同方式的訪問權限控制。每一個guard又通過自己的provider來獲取被存儲的用戶信息,用來進行權限判定。
所以Laravel框架在web route的權限控制方面,所做的,其實是幾件事:
- 定義了一個middleware,叫做auth
- 引入了guard這個類,並為其建立了配置文件、生成方式、調用方式等配套機制
- 為了guard類能夠適應不同的用戶信息存儲方式,又建立了provider類,以及對應的配置文件、生成方式和調用方式。
Authorization
authorization,是基於Laravel框架的ServiceProvider機制實現的,框架內部實現機制,有時間再單獨研究。這里面有2個東東,一個叫Gate,另一個叫Policy。
Gate:基於閉包的訪問控制,用來管理那些不針對任何資源的操作。
Policy:用來管理針對某個資源的操作。