Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 配置文件设置中间件_Php_Laravel_Laravel 5_Vuejs2_Laravel Middleware - Fatal编程技术网

Php 配置文件设置中间件

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()->

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

中间件:

 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