当前位置: 首页 > 后端技术 > PHP

laravel-passport实现API认证(Laravel5.6)

时间:2023-03-30 05:52:23 PHP

第一部分安装Passport(laravel/passport)第一步。使用Composer安装Passport:composerrequirelaravel/passport=~7.0第二步。Passport服务提供者使用框架注册自己的数据库迁移目录,所以在注册提供者之后,你应该运行Passport的迁移命令来自动创建一个数据表来存储客户端和令牌:phpartisanmigrate第三步,接下来运行passport:install命令创建生成安全访问令牌所需的加密密钥,同时该命令还将创建用于生成访问令牌的“个人访问”客户端和“密码授权”客户端:phpartisanpassport:install部分2开始配置Step4.将LaravelPassportHasApiTokensTrait添加到AppUser模型,`该Trait将为您的模型提供一些帮助函数,用于检查经过身份验证的用户的令牌和使用范围:addDays(30));//这里设置为30天后过期Passport::refreshTokensExpireIn(now()->addDays(30));}}Step6.在auth.php中,修改api认证方式为passport:['web'=>['driver'=>'session','provider'=>'users',],'api'=>['driver'=>'passport','provider'=>'users',],]];第三部分提供测试接口Step7.添加相应的API路由配置:'Api'],function(){//LoginRoute::post('login','LoginController@login');//注册Route::post('register','LoginController@register');Route::group(['middleware'=>'auth:api'],function(){//用户信息Route::get('user','LoginController@read');});});步骤8.创建控制器=>phpartisanmake:controllerApi/LoginController:request('email'),'password'=>request('password')])){$user=Auth::user();$success['token']=$user->createToken('EDU')->accessToken;returnresponse()->json(['success'=>$success],$this->successStatus);}else{returnresponse()->json(['error'=>'Unauthorised'],401);}}/***注册API**@paramRequest$request*@paramemail登录邮箱*@parampassword登录密码**@return\Illuminate\Http\Response*/publicfunctionregister(Request$request){//数据验证$validator=Validator::make($request->all(),['name'=>'required','email'=>'required|email','password'=>'required','c_password'=>'required|same:password']);如果($validator->fails()){returnresponse()->json(['error'=>$validator->errors()],401);}//读取参数并保存数据$input=$request->all();$input['密码']=bcrypt($input['密码']);$user=User::create($input);//创建令牌并返回$success['token']=$user->createToken('EDU')->accessToken;$success['name']=$user->name;returnresponse()->json(['success'=>$success],$this->successStatus);}/***读取用户信息API**@return\Illuminate\Http\Response*/publicfunctionread(){$user=Auth::user();returnresponse()->json(['success'=>$user],$this->successStatus);}}Step9.使用Postman测试API:测试API数据获取,需要在headers中添加Token;formatkey=Authorization,value=Bearerspacetoken