配置文件设置中间件



我有一个用户配置文件页面和用户配置文件/设置页面 问题是我为设置页面制作了一个中间件,以防止任何身份验证用户进入其他用户设置页面或更新它们,除非 ID 或 SLUG 与身份验证用户匹配,但每当我使用 API 路由获取或更新它说未经授权的 401 或 500 的数据时,我都在使用 Vue。

中间件 :

public function handle($request, Closure $next)
{
if ($request->slug != auth()->user()->slug) {
return redirect()->to('/');
}
return $next($request);
}

接口路由 :

Route::get('/profile/{slug}','ProfilePrivateController@show')->middleware('editProfile');;

VueJs :

update(){
axios.put(`/api/profile/${this.id}`,{
email : this.email,
username : this.name,
password : this.password,
education_level : this.education_level,
fb_url : this.fb_url,
twitter_url : this.twitter_url,
field : this.field
})
.then(res=>console.log(res))
}

控制器:

public function show($slug)
{
$user = User::findBySlugOrFail($slug);
return response()->json($user);
}

public function update(Request $request, $slug)
{
$user = User::findBySlug($slug);
$user->update([
'email'=>$request->email,
'education_level'=>$request->education_level,
'field'=>$request->field,
'school'=>$request->school,
'fb_url'=>$request->fb_url,
'twitter_url'=>$request->twitter_url,
]);
if($request->has('password')){
$user->save([
'password'=>$request->password
]);
}
return response()->json('user updated',200);

}

我想让用户同时更新他的设置并保护 API。

在这一点上我真的很迷茫 任何帮助都非常感谢!

你有一个 API 路由的 GET 请求,但在 Vue 中使用了一个 PUT 请求。

Route::get更新为Route::put应该可以解决问题。

此外,由于它是一个 AJAX 请求,因此您应该返回一个 JSON 响应,以便可以轻松使用它。您可以返回类似于以下内容的内容:

return response()->json(['error' => 'unauthorized'], 401);

最新更新