安装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与用户名
登录接口
详情接口
相关推荐:
关于Laravel之October的安装配置过程
以上就是如何利用laravel Passport实现API认证的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答