omarelgabry / lumen-api-oauth
基于Lumen微框架和OAuth2的RESTful API。
Requires
- php: >=5.5.9
- laravel/homestead: ^3.0
- laravel/lumen-framework: 5.2.*
- lucadegasperi/oauth2-server-laravel: ^5.1
- vlucas/phpdotenv: ~2.2
Requires (Dev)
- fzaninotto/faker: ~1.4
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2024-09-05 01:53:05 UTC
README
Lumen API OAuth
基于Lumen微框架和OAuth2的RESTful API。Lumen API OAuth是一个简单的应用程序,适用于小型项目,帮助理解如何使用Lumen和OAuth2创建RESTful API,了解如何进行身份验证和授权等。
用于帖子及评论的RESTful API,用户可以查看、创建、更新和删除。它提供了使用OAuth2、所有权和非管理员与管理员用户的授权机制。
📣 关于如何使用Lumen和OAuth2构建RESTful API的完整教程可以在 Medium 上找到。
索引
安装
步骤
-
运行 Composer
composer install -
Laravel Homestead
如果您正在使用Laravel Homestead,请按照 安装指南 操作。
-
WAMP、LAMP、MAMP、XAMP服务器
如果您正在使用WAMP、LAMP、MAMP或XAMP服务器之一,请确保创建一个数据库,可能是MySQL数据库。
-
配置
.env文件将
.env.example文件重命名为.env,将应用程序密钥设置为32个字符的随机字符串,如果需要,编辑数据库名称、数据库用户名和数据库密码。 -
最后,运行迁移并将假数据填充到数据库中。
php artisan migrate --seed
术语
以下是一些将用于OAuth 2.0术语含义的术语。如果您需要复习,请查看 此内容。
授权
授权分为两层。第一层是对访问令牌进行授权,第二层是检查所有权以及非管理员与管理员用户。
默认情况下,用户只能在其是所有者的情况下删除或更新帖子或评论。
访问令牌
应用程序实现了 资源所有者凭据授权,本质上需要客户端提交5个字段:username、password、client_id、client_secret和grant_type。
授权服务器将在客户端凭据和授权授予(用户凭据)成功验证后向客户端颁发访问令牌。
在app/Http/routes.php中,已定义了一个用于请求访问令牌的路由。
所有权,非管理员与管理员用户
现在,在验证访问令牌后,我们可以扩展授权层,检查当前用户是否是请求的资源(即帖子或评论)的所有者,或是否是管理员。那么,它是如何工作的?
为控制器分配中间件
public function __construct(){ $this->middleware('oauth', ['except' => ['index', 'show']]); $this->middleware('authorize:' . __CLASS__, ['except' => ['index', 'show', 'store']]); }
顺序
请注意,中间件必须按照一定顺序应用。必须在 authorize 中间件之前添加 oauth。
重写 isAuthorized() 方法
public function isAuthorized(Request $request){ $resource = "posts"; $post = Post::find($this->getArgs($request)["post_id"]); return $this->authorizeUser($request, $resource, $post); }
在 app/Providers/AuthServiceProvider.php 中,使用 Gate 门面定义能力。
路由
以下是在 app/routes.php 中定义的一些路由。您可以使用 Postman 测试 API。
支持
我在学习期间利用空闲时间编写了这个脚本。这是免费的,不需要支付。如果您觉得它有用,请通过宣传来支持这个项目。
贡献
通过创建新问题,在 Github 上发送拉取请求来贡献,或者您可以发送电子邮件到:omar.elgabry.93@gmail.com
依赖
许可证
在 MIT 许可证下构建。
