每天一点点之laravel框架 - Laravel5.6 + Passport实现Api接口认证

1.首先通过 Composer 包管理器安装 Passport:

composer require laravel/passport

注:如果安装过程中提示需要更高版本的 Laravel:laravel/passport v5.0.0 requires illuminate/http ~5.6,可以通过指定版本来安装 composer require laravel/passport ~4.0

2.注册服务提供者

将 Passport 的服务提供者注册到配置文件 config/app.php 的 providers 数组中

Laravel\Passport\PassportServiceProvider::class,

Laravel 5.5之后会自动注册服务提供者

3.迁移数据库

php artisan migrate

注:如果你不想使用 Passport 的默认迁移,需要在 AppServiceProvider 的 register 方法中调用 Passport::ignoreMigrations 方法。你可以使用 php artisan vendor:publish --tag=passport-migrations 导出默认迁移。

4.创建生成安全访问令牌(token)所需的加密键

需要运行 passport:install 命令,该命令将会创建生成安全访问令牌(token)所需的加密键,此外,该命令还会创建「personal access」和「password grant」客户端用于生成访问令牌:

php artisan passport:install
生成记录存放在数据表 oauth_clients

?

5.运行完这个命令后,添加 Laravel\Passport\HasApiTokens trait 到 App\User 模型,该 trait 将会为模型类提供一些辅助函数用于检查认证用户的 token 和 scope:

<?php

namespace App;

use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
}

6.接下来,你需要在 AuthServiceProvider 的 boot 方法中调用 Passport::routes 方法,该方法将会为颁发访问令牌、撤销访问令牌、客户端以及私人访问令牌注册必要的路由:

<?php

namespace App\Providers;

use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        ‘App\Model‘ => ‘App\Policies\ModelPolicy‘,
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        Passport::routes();
    }
}

7.最后,在配置文件 config/auth.php 中,需要设置 api 认证 guard 的 driver 选项为 passport。这将告知应用在认证输入的 API 请求时使用 Passport 的 TokenGuard

‘guards‘ => [
    ‘web‘ => [
        ‘driver‘ => ‘session‘,
        ‘provider‘ => ‘users‘,
    ],

    ‘api‘ => [
        ‘driver‘ => ‘passport‘,
        ‘provider‘ => ‘users‘,
    ],
],

密码授权令牌

OAuth2 密码授权允许你的其他第一方客户端,例如移动应用,使用邮箱地址/用户名+密码获取访问令牌。这使得你可以安全地颁发访问令牌给第一方客户端而不必要求你的用户走整个 OAuth2 授权码重定向流程。

创建密码发放客户端

在应用可以通过密码授权颁发令牌之前,需要创建一个密码授权客户端,你可以通过使用带 --password 选项的 passport:client 命令来实现。如果你已经运行了 passport:install 命令,则不必再运行这个命令:

php artisan passport:client --password

这里我们使用一开始通过 passport:install 命令创建的记录作为测试记录。

请求令牌

创建完密码授权客户端后,可以通过发送 POST 请求到 /oauth/token 路由(带上用户邮箱地址和密码)获取访问令牌。这个路由已经通过 Passport::routes 方法注册过了,不需要手动定义。如果请求成功,就可以从服务器返回的 JSON 响应中获取 access_token 和 refresh_token

和通过授权码返回数据格式一致。

这里的username使用的是email,如果想要通过name、iphone来获取,需要在users模型中添加一下方法

    // 允许passport通过这些字段找到你的用户实例
    public function findForPassport($name)
    {
        $user = Users::where(‘name‘, $name)
            // ->orWhere(‘phone‘, $name)
            ->orWhere(‘email‘, $name)
            ->first();
        return $user;
    }

注:记住,访问令牌默认长期有效,不过,如果需要的话你也可以配置访问令牌的最长生命周期

友情链接:

  laravel官网-API身份验证

  [ Laravel 5.6 文档 ] 安全系列 —— API 认证

原文地址:https://www.cnblogs.com/cap-rq/p/10145523.html

时间: 2024-08-30 16:05:06

每天一点点之laravel框架 - Laravel5.6 + Passport实现Api接口认证的相关文章

Laravel 5.5 使用 Jwt-Auth 实现 API 用户认证

安装 composer require tymon/jwt-auth 1.0.0-rc.1 配置 添加服务提供者 'providers' => [ Tymon\JWTAuth\Providers\LaravelServiceProvider::class, ] 发布配置文件 php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider" 生成密钥 php artisan

Laravel框架学习(四)

一. composer的安装: 1.Composer是什么? 是 PHP 用来管理依赖(dependency)关系的工具. 你可以在自己的项目中声明所依赖的外部工具库(libraries), Composer 会帮你安装这些依赖的库文件. 2.网址:https://getcomposer.org 下载:https://getcomposer.org/download/ 中国全量镜像:http://pkg.phpcomposer.com/ 启用本镜像服务命令: composer config -g

阿里云centos7.2 搭建 laravel 框架走过的坑

centos7.2 搭建 laravel框架走过的坑 前言 公司正在处于发展阶段最近开发的伙伴和运维的伙伴一直在忙碌着 开发人员一直在写laravel架构的代码以及新项目的拓展,时间很赶所以作为linux运维的我也不能怠慢. 首先搭建lnmp架构 nginx php 我选择的yum,wget的安装方法 mysql选择编译安装 因为我只认为MySQL我还有编译安装的需要(熟悉熟悉). 准备 : 1.PHP 7版本  2.openssl(yum安装)3.pdo扩展 mysql 4.安装compose

laravel框架学习(二)

在了解Laravel框架的基本结构之后,初步认识访问过程中路由的使用方法,以一套基本的学生信息增删改查来迅速学习框架开发. 首先了解几个目录文件作为开发的主要阵地: 1. /app/Http/routes.php 路由文件,一切访问从路由开始 2./app/Http/Controllers 控制器目录,我们写的控制器都放在该目录下 3./app/config Laravel配置文件夹一般修改.env文件 4./.env 经常修改配置的文件,数据库配置就在这里 5./public Laravel框

php的laravel框架使用心得

最近在做一项目,是基于laravel的后台api,用于与手机交互的,数据采用json格式.下面说下怎样在两周内把一个新框架或者语言用的得心应手. 项目采用laravel5.4+dingoapi+jwt,数据库使用model(orm)方式. 1.熟练使用工具,我平常看代码用sublime,很轻巧的工具.断点调试用phpstorm,api测试用postman(google浏览器插件),本地用phpstudy搭建环境 2.sublime就不说了,用起来比较简单.phpstorm配置调试,费了不少时间,

Laravel框架怎样使用阿里云ACE缓存服务

Laravel框架怎样使用阿里云ACE缓存服务 之前我写了一篇在 Laravel 4 框架中使用阿里云 OCS 缓存的文章.介绍了怎样通过扩展 Laravel 4 来支持须要 SASL 认证的阿里云 OCS 缓存服务.有网友问我.ACE 的缓存怎么在 Laravel 4 中使用.我本来认为应该能够全然用同样的办法,后来自己尝试的时候才发现,ACE 的缓存区别很大.所以再写一篇,介绍一下怎样在 Laravel 框架中使用阿里云 ACE 的缓存服务. 怎样扩展 Laravel 的缓存驱动 在 Lar

Laravel框架如何使用阿里云ACE缓存服务

Laravel框架如何使用阿里云ACE缓存服务 之前我写了一篇在 Laravel 4 框架中使用阿里云 OCS 缓存的文章,介绍了如何通过扩展 Laravel 4 来支持需要 SASL 认证的阿里云 OCS 缓存服务.有网友问我,ACE 的缓存怎么在 Laravel 4 中使用.我本来觉得应该可以完全用相同的办法,后来自己尝试的时候才发现,ACE 的缓存差别非常大.所以再写一篇,介绍一下如何在 Laravel 框架中使用阿里云 ACE 的缓存服务. 如何扩展 Laravel 的缓存驱动 在 La

laravel框架安装

传送门:goofyy技术宅 Laravel-简洁.优雅的PHP开发框架(PHP Web Framework) PHP是一门优秀的语言,当php遇上Laravel框架,简直了,Laravel框架是PHP框架排行榜最高的框架,小编暑假闲来没事也是玩一玩.不多扯,首先是Laravel框架的安装,很多新手死在了这一步. 首先写一下小编的开发环境: 安装环境: 操作系统:Mac OS X10.10.4 数据库:mysql 5.5.16 PHP: 5.5.24 小编使用的是Laravel5.1.PHP版本要

Laravel框架的一些配置

服务器的配置 1.在apache下的配置 配置httpd-conf:php5_module.rewrite_module.Listen 配置extra/httpd-vhost:端口.站点.域名.默认首页 系统hosts:将域名指向本地 重启apache linux下记得修改文件夹权限:storage.vendor 2.在nginx下的配置 配置nginx.conf:端口.站点.域名.默认首页 FastCgi location ~ \.php$ { fastcgi_pass 127.0.0.1:9