如何利用laravel Passport实现API认证_Yii_青云站长教程网
欢迎来到站长教程网!
  • 秒到短信接口 免费试用
  • 微信支付宝接口 秒结算
  • 中文网站排名|申请加入
  • 搜索引擎全站查询
  • 查询移动网站权重数据
  • 海外主机 台湾公司直销
  • Yii

    当前位置:主页 > 网络编程 > Yii >

    如何利用laravel Passport实现API认证

    时间:2019-10-09|栏目:Yii|点击:
  • 这篇文章主要介绍了关于如何使用laravel Passport做API认证,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

    安装larave

    laravel new passport_demo cd passport_demo && composer install

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

    DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret

    安装Passport

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

    执行时可能出现以下错误

    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`))

    编辑

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

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

    php artisan migrate php artisan passport:install

    编辑将添加到

    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',]; }

    在的方法中调用函数

    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();//新增 } }

    将配置文件中授权看守器的的选项改为

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

    创建文件,这里的代码来自另一个教程。

    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与用户名

    3344432153-5b4cb2a8c135f_articlex[1].png

    登录接口

    3609437792-5b4cba0dbb647_articlex[1].png

    详情接口

    15283284-5b4ccf0032168_articlex[1].png

    上一篇:PHP的内置函数strlen以及mbstring的扩展函数mb_strlen之间的区别分析

    栏    目:Yii

    下一篇:PHP获取LDAP服务器Schema数据的方法

    本文标题:如何利用laravel Passport实现API认证

    本文地址:http://www.jh-floor.com/wangluobiancheng/Yii/85761.html

    广告投放 | 联系我们 | 版权申明

    重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

    如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

    联系QQ:888888 | 邮箱:888888#qq.com(#换成@)

    Copyright © 2002-2017 青云站长教程网 版权所有 琼ICP备xxxxxxxx号