安装laravelaravelnewpassport_democdpassport_demo&&composerinstall修改.env中的数据库配置为自己的数据库配置DB_DATABASE=homesteadDB_USERNAME=homesteadDB_PASSWORD=secret安装Passportcomposerrequirelaravel/passportphpartisanmigratephpartisanpassport:install执行phpartisan时可能会出现以下错误迁移Illuminate\Database\QueryException:SQLSTATE[42000]:语法错误或访问冲突:1071指定的键太长;最大密钥长度为767字节(SQL:altertable`users`addunique`users_email_unique`(`email`))编辑app/Providers/AppServiceProvider.php命名空间App\Providers;使用Illuminate\Support\ServiceProvider;useIlluminate\Support\Facades\Schema;//NewclassAppServiceProviderextendsServiceProvider{publicfunctionboot(){Schema::defaultStringLength(191);//Add}publicfunctionregister(){}}然后执行这两个命令。phpartisanmigratephpartisanpassport:install编辑App\User添加Laravel\Passport\HasApiTokens到App\User命名空间App;使用Illuminate\Notific通知\通知;使用Illuminate\Foundation\Auth\User作为可验证的;useLaravel\Passport\HasApiTokens;//添加新类UserextendsAuthenticatable{useNotifiable;useHasApiTokens;//添加受保护的$fillable=['name','email','password',];protected$hidden=['密码','remember_token',];}在app/Providers/AuthServiceProvider.php命名空间App\Providers的boot方法中调用Passport::routes函数;使用Illuminate\Support\Facades\Gate;使用Illuminate\Foundation\Support\Providers\AuthServiceProvider作为ServiceProvider;useLaravel\Passport\Passport;//NewclassAuthServiceProviderextendsServiceProvider{protected$policies=['App\Model'=>'App\Policies\ModelPolicy',];publicfunctionboot(){$this->registerPolicies();Passport::routes();//New}}会在文件config/auth.php中配置授权守卫api的driver选项改为passport//修改前'guards'=>['web'=>['驱动程序'=>'会话','提供者'=>'用户',],'api'=>['driver'=>'token','provider'=>'users',],],//修改后'guards'=>['web'=>['driver'=>'session','provider'=>'users',],'api'=>['driver'=>'passport','provider'=>'users',],],创建文件app/Http/Controllers/UserController.php,这里的代码来自另一个教程。使用Illuminate\Http\Request;使用App\Http\Controllers\Controller;使用应用\用户;使用Illuminate\Support\Facades\Auth;使用验证器;类UserController扩展控制器{public$successStatus=200;publicfunctionlogin(){if(Auth::attempt(['email'=>request('email'),'password'=>request('password')])){$user=Auth::user();$success['token']=$user->createToken('MyApp')->accessToken;returnresponse()->json(['success'=>$success],$this->successStatus);}else{returnresponse()->json(['error'=>'Unauthorised'],401);}}publicfunctionregister(Request$request){$validator=Validator::make($request->all(),['name'=>'required','email'=>'required|email','password'=>'需要','c_password'=>'需要|相同:密码',]);如果($validator->fails()){returnresponse()->json(['error'=>$validator->errors()],401);$input=$request->all();$input['密码']=bcrypt($input['密码']);$user=User::create($input);$success['token']=$user->createToken('MyApp')->accessToken;$success['name']=$user->name;returnresponse()->json(['success'=>$success],$this->successStatus);}publicfunctiondetails(){$user=Auth::user();回复回复e()->json(['success'=>$user],$this->successStatus);}}使用postman测试注册接口,注册成功后返回token和用户名。2016Laravel5.4Oauth2.0认证应用API实战来啦!
