首页 > 编程 > PHP > 正文

如何利用laravel Passport实现API认证

2020-03-22 17:07:00
字体:
来源:转载
供稿:网友
这篇文章主要介绍了关于如何使用laravel Passport做API认证,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

安装larave

laravel new passport_democd passport_demo composer install

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

 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret

安装Passport

composer require laravel/passportphp artisan migratephp 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;//新增 html' target='_blank'>class AppServiceProvider extends ServiceProvider{ public function boot(){} public function register(){ Schema::defaultStringLength(191);//新增 }

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

php artisan migratephp 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

相关推荐:

关于Laravel之October的安装配置过程

以上就是如何利用laravel Passport实现API认证的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表