我有一个用户配置文件页面和用户配置文件/设置页面 问题是我为设置页面制作了一个中间件,以防止任何身份验证用户进入其他用户设置页面或更新它们,除非 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);