omarelgabry/lumen-api-oauth

基于Lumen微框架和OAuth2的RESTful API。

v1.0 2016-04-07 08:48 UTC

This package is auto-updated.

Last update: 2024-09-05 01:53:05 UTC


README

Lumen API OAuth

Lumen API OAuth

Build Status Scrutinizer Code Quality Code Climate Dependency Status

Latest Stable Version License

基于Lumen微框架和OAuth2的RESTful API。Lumen API OAuth是一个简单的应用程序,适用于小型项目,帮助理解如何使用Lumen和OAuth2创建RESTful API,了解如何进行身份验证和授权等。

用于帖子及评论的RESTful API,用户可以查看、创建、更新和删除。它提供了使用OAuth2、所有权和非管理员与管理员用户的授权机制。

📣 关于如何使用Lumen和OAuth2构建RESTful API的完整教程可以在 Medium 上找到。

索引

安装

步骤

  1. 运行 Composer

    	composer install
    
  2. Laravel Homestead

    如果您正在使用Laravel Homestead,请按照 安装指南 操作。

  3. WAMP、LAMP、MAMP、XAMP服务器

    如果您正在使用WAMP、LAMP、MAMP或XAMP服务器之一,请确保创建一个数据库,可能是MySQL数据库。

  4. 配置.env文件

    .env.example文件重命名为.env,将应用程序密钥设置为32个字符的随机字符串,如果需要,编辑数据库名称、数据库用户名和数据库密码。

  5. 最后,运行迁移并将假数据填充到数据库中。

    	php artisan migrate --seed
    

术语

以下是一些将用于OAuth 2.0术语含义的术语。如果您需要复习,请查看 此内容

授权

授权分为两层。第一层是对访问令牌进行授权,第二层是检查所有权以及非管理员与管理员用户。

默认情况下,用户只能在其是所有者的情况下删除或更新帖子或评论。

访问令牌

应用程序实现了 资源所有者凭据授权,本质上需要客户端提交5个字段:usernamepasswordclient_idclient_secretgrant_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 许可证下构建。