Php 配置文件设置中间件
我有一个用户配置文件页面和用户配置文件/设置页面 问题是,我为设置页面制作了一个中间件,以防止任何身份验证用户进入其他用户设置页面或更新他们,除非ID或SLUG与身份验证用户匹配,但每当我使用API路由获取或更新数据时,我都使用Vue,它表示未经授权的401或500 中间件:Php 配置文件设置中间件,php,laravel,laravel-5,vuejs2,laravel-middleware,Php,Laravel,Laravel 5,Vuejs2,Laravel Middleware,我有一个用户配置文件页面和用户配置文件/设置页面 问题是,我为设置页面制作了一个中间件,以防止任何身份验证用户进入其他用户设置页面或更新他们,除非ID或SLUG与身份验证用户匹配,但每当我使用API路由获取或更新数据时,我都使用Vue,它表示未经授权的401或500 中间件: public function handle($request, Closure $next) { if ($request->slug != auth()->user()->
public function handle($request, Closure $next)
{
if ($request->slug != auth()->user()->slug) {
return redirect()->to('/');
}
return $next($request);
}
API路线:
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);
$request->input('slug')
?@vivek_23而不是使用id我使用了slug我的意思是用这个替换if条件并再次检查-if($request->input('slug')!=auth()->user()->slug){
。此外,如果这是您试图制作的API,您应该返回JSON响应,而不是在中间件中重定向。@vivek_23我如何处理vueApp中中间件的响应?因此,您还必须显示控制器。我修复了get-to-put..仍然出现错误500