安装larave

laravel new passport_demo
cd passport_demo && composer install

将 .env 中数据库配置修改为自己的数据库配置

 DB_DATABASE=homesteadDB_USERNAME=homesteadDB_PASSWORD=secret

安装Passport

composer require laravel/passport
php artisan migrate
php artisan passport:install

执行php artisan migrate时可能出现以下错误

Illuminate\Database\QueryException  : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))

编辑app/Providers/AppServiceProvider.php

 namespace App\Providers;use Illuminate\Support\ServiceProvider;use Illuminate\Support\Facades\Schema;//新增class AppServiceProvider extends ServiceProvider{public function boot(){Schema::defaultStringLength(191);//新增}public function register(){}}

然后再执行这两条命令即可

php artisan migrate
php artisan passport:install

编辑App\User将Laravel\Passport\HasApiTokens添加到App\User

 namespace App;use Illuminate\Notifications\Notifiable;use Illuminate\Foundation\Auth\User as Authenticatable;use Laravel\Passport\HasApiTokens;//新增class User extends Authenticatable{use Notifiable;use HasApiTokens;//新增protected $fillable = ['name', 'email', 'password',];protected $hidden = ['password', 'remember_token',];}

在app/Providers/AuthServiceProvider.php的 boot方法中调用Passport::routes函数

 namespace App\Providers;use Illuminate\Support\Facades\Gate;use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;use Laravel\Passport\Passport;//新增class AuthServiceProvider extends ServiceProvider{protected $policies = ['App\Model' => 'App\Policies\ModelPolicy',];public function boot(){$this->registerPolicies();Passport::routes();//新增}}

将配置文件config/auth.php中授权看守器guards的api的driver选项改为passport

//修改前'guards' => ['web' => ['driver' => 'session','provider' => 'users',],'api' => ['driver' => 'token','provider' => 'users',],],
// 修改后'guards' => ['web' => ['driver' => 'session','provider' => 'users',],'api' => ['driver' => 'passport','provider' => 'users',],],

创建文件app/Http/Controllers/UserController.php,这里的代码来自另一个教程。

 namespace App\Http\Controllers;use Illuminate\Http\Request;use App\Http\Controllers\Controller;use App\User;use Illuminate\Support\Facades\Auth;use Validator;class UserController extends Controller {public $successStatus = 200;public function login() {if(Auth::attempt(['email' => request('email'), 'password' => request('password')])) {$user = Auth::user();$success['token'] =  $user->createToken('MyApp')->accessToken;return response()->json(['success' => $success], $this->successStatus);}else{return response()->json(['error'=>'Unauthorised'], 401);}}public function register(Request $request) {$validator = Validator::make($request->all(), ['name' => 'required','email' => 'required|email','password' => 'required','c_password' => 'required|same:password',]);if ($validator->fails()) {return response()->json(['error'=>$validator->errors()], 401);}$input = $request->all();$input['password'] = bcrypt($input['password']);$user = User::create($input);$success['token'] =  $user->createToken('MyApp')->accessToken;$success['name'] =  $user->name;return response()->json(['success'=>$success], $this->successStatus);}public function details() {$user = Auth::user();return response()->json(['success' => $user], $this->successStatus);}}

使用postman进行测试
注册接口,注册成功后返回token与用户名

登录接口

详情接口

参考了简书 浪来了2016 的Laravel5.4 Oauth2.0认证应用 API 实战!

使用 laravel Passport 做 API 认证相关推荐

  1. Laravel+passport 实现API认证

    1.通过Composer安装Passport composer require laravel/passport 2.在配置文件app.php中的providers数组中注册Passport服务: L ...

  2. Laravel 使用 Passport 进行API认证

    曾经使用过Dingo + JWT来做API系统,工作起来还好,就是配置比较麻烦.现在使用官方扩展包来尝试下. 首先安装 Laravel/Passport,这里不再重复,直接参考官方文档. https: ...

  3. php artisan passport,API 认证解决方案:Laravel Passport

    API 认证解决方案:Laravel Passport 由 学院君 创建于2年前, 最后更新于 1年前 版本号 #1 27631 views 4 likes 0 collects 简介 Laravel ...

  4. laravel auth login 重定向自定义_Laravel学习之路(一):最简单的API 认证(Passport)实践...

    API 认证(Passport)简介 Laravel 通过传统的登录表单已经让用户认证变得很简单,但是 API 认证怎么实现?API 通常使用令牌(token)进行认证并且在请求之间不维护会话(Ses ...

  5. 基于 OAuth 的 API 认证解决方案:Passport

    https://xueyuanjun.com/post/21568 简介 Laravel 通过传统的登录表单已经让用户认证变得很简单,但是 API 认证怎么实现?API 通常使用令牌(token)进行 ...

  6. Laravel 5.5 使用 Passport 实现 Auth 认证

    最近在写一个前后端分离项目,本来想用 Jwt-auth + Dingo 开发的,但是略感笨重,于是想到了 Laravel 的 Passport 和 5.5 新出的 Api Resource.Larav ...

  7. Laravel实现简单的API认证

    个人总结Laravel - API认证的几个步骤: 1.为 User 添加 api_token 字段: 2.在 User 模型中的 $fillable.$hidden 添加 api_token 字段 ...

  8. Laravel使用Dingo API+JWT实现认证机制 无痛刷新Token

    Laravel使用Dingo API+JWT实现认证机制 无痛刷新Token 一.安装[Dingo API](https://github.com/dingo/api) 和 [JWT](https:/ ...

  9. php oauth2.0 实例,详解laravel passport OAuth2.0的4种模式

    参考: 1... 熟悉的场景 某个网站,某用户未注册,注册时提示可微信账号登录(github, google都有类似 某网站是第三方(客户端), 认证服务器和资源服务器都在微信,资源是指微信的用户名, ...

最新文章

  1. Linux C动态链接库实现一个插件例子
  2. java中的IO详解(上)
  3. 鸿蒙os2.0通知栏,网友上手鸿蒙手机OS 2.0公测版:界面与EMUI已有明显不同
  4. 设计模式---代理模式
  5. ifconfig命令找不到_02. Linux命令之查看网络连接
  6. java中如何生成随机数?
  7. Java 多线程详解(三)------线程的同步
  8. eda多功能数字钟课程设计_eda课程设计——多功能数字钟.doc
  9. 编译easymule 1.1.5
  10. oracle数据库修改密码方法,修改oracle数据库用户名及密码的方法
  11. sw转cad映射文件_SolidWorks工程图转CAD图纸DWG文件教程-很吊
  12. IP协议的详细知识总结
  13. ubuntu安装中的小tips
  14. 【Pandas】一文入门Pandas处理csv文件数据集(神经网络/机器学习算法数据预处理)
  15. SylixOS x86 HPET 定时器驱动
  16. 变态级JAVA程序员面试32问(转)
  17. ESP32 Wi-Fi讲解,station连接热点案例
  18. 树莓派4B安装Openwrt软路由并用作家庭网络网关设备
  19. 新氧《2021中国医美抗衰消费趋势报告》:医美抗衰市场规模超755亿元
  20. [清华集训2014]奇数国

热门文章

  1. 什么是Selenium?如何使用Selenium进行自动化测试
  2. 今日头条ocpm计费规则_今日头条广告投放推广新产品选OCPM还是CPA好?是新的计费方式吗?...
  3. python论坛签到_Python实现某论坛自动签到功能
  4. Fiddler改包场景04——先拦截请求,修改请求,再拦截响应,修改响应,放行响应
  5. FunTester框架Redis压测预备
  6. linux mysql 2003_如何解决linux mysql2003错误
  7. matlab 追赶法
  8. yii2 html编辑器,浅析Yii2集成富文本编辑器redactor实例教程
  9. cxf超时设置不起效_晚上不限时,白天1小时!上海限时长停车场来了
  10. 要用计算机才能算的题,计算机基础题精选,要考90分以上的同学进考场前必看 -电脑资料...