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:用来管理针对某个资源的操作。