拉拉维尔的护照认证仅适用于GET方法



我使用的是使用Ionic构建一个应用程序,该应用程序消耗了Passport的身份验证中Laravel制造的REST API。我的问题是,当我提出请求时,它可以很好地工作,但是当我尝试使用PUT方法发送数据时,它总是返回"未经身份验证"。

我对不起作用的API的调用

update(data) {
    let headers = new Headers({
        'Content-Type': 'x-www-form-urlencoded',
        'Accept': 'application/json',
        'Authorization': this.token
    });
    return new Promise((resolve,reject)=>{
        this.http.put(`${environment.API_ENDPOINT}/api/user`, {
            headers: headers,
            data: data
        }).subscribe((result:any)=>{
            resolve(result.json());
        },(error:any)=>{
            reject(error.json());
        });
    })
}

我有效的呼叫

getCurrentUser() {
    let headers = new Headers({
        'Content-Type': 'application/json',
        'Accept': 'application/json',
        'Authorization': this.token
    });
    return this.http.get(`${environment.API_ENDPOINT}/api/user`, {
        headers: headers
    }).map(res => res.json());
}

在laravel路线/api.php

Route::group(['middleware' => ['auth:api']], function () {
    Route::get('/user', function(Request $request){
        return $request->user();
    });
    Route::put('/user','UserController@update');
});

控制器上的更新方法

public function update(Request $request){
    $user = User::find($request->user()->id);

    $validator = Validator::make($request->all(),[
        'nome'=> 'required|max:255',
        'cpf' => 'required|max:14',
        'telefoneCelular' => 'required',
    ]);
    if($validator->fails()){
        return response()->json(['message'=>$validator->errors()],400);
    }else{
        $user->nome = $request->input('nome');
        $user->cpf = $request->input('cpf');
        $user->telefoneCelular = $request->input('telefoneCelular');
        if($user->save()){
            return response()->json(['data'=>$user],201);
        }else{
            return response()->json(['message'=>'Erro ao atualizar usuário'],400);
        }
    }
}

ps:它与Postman合作

我弄清楚了问题是我将错误的参数传递给 this.http.put

这是有效的代码

update(data) {
    let headers = new Headers({
        'Content-Type': 'x-www-form-urlencoded',
        'Accept': 'application/json',
        'Authorization': this.token
    });
    console.log(headers);
    return new Promise((resolve,reject)=>{
        this.http.put(`${environment.API_ENDPOINT}/api/user`, data, {
            headers: headers,
        }).subscribe((result:any)=>{
            resolve(result.json());
        },(error:any)=>{
            reject(error.json());
        });
    })
}

最新更新