Javascript 在Laravel中调用ajax后如何重定向到登录?

Javascript 在Laravel中调用ajax后如何重定向到登录?,javascript,php,ajax,laravel,laravel-5,Javascript,Php,Ajax,Laravel,Laravel 5,我有一个对所有用户都可见的like按钮,但我只希望经过身份验证的用户能够喜欢和不喜欢该产品。如果一个客人试图喜欢,我想把他们重定向到登录页面 刃锉 <div style="display: {{$product->isLiked ? "" : "none"}}" id="deletefavourite{{$product->id}}"onClick="deleteFromFavourites({{$product->id}}, {{ Auth::user()->

我有一个对所有用户都可见的like按钮,但我只希望经过身份验证的用户能够喜欢和不喜欢该产品。如果一个客人试图喜欢,我想把他们重定向到登录页面

刃锉

 <div style="display: {{$product->isLiked ? "" : "none"}}" id="deletefavourite{{$product->id}}"onClick="deleteFromFavourites({{$product->id}}, {{   Auth::user()->id }})"> unlike </div>
<div style=" display: {{!$product->isLiked ? "" : "none"}}" id="addfavourites{{$product->id}}" onClick="addToFavourites({{$product->id}}, {{ Auth::user()->id }})" > like </div>
类控制器

  public function likeProduct($id)
{


    if(Auth::check()){
    $this->handleLike(Product::class, $id);
    return redirect()->back();
    }
    else{
        return redirect()->route('login')
    }
}

public function handleLike($type, $id)
{
    $existing_like = Like::withTrashed()->whereLikeableType($type)->whereLikeableId($id)->whereUserId(Auth::id())->first();

    if (is_null($existing_like)) {
        Like::create([
            'user_id'       => Auth::id(),
            'likeable_id'   => $id,
            'product_id'   => $id,
            'likeable_type' => $type,
        ]);
    } else {
        if (is_null($existing_like->deleted_at)) {
            $existing_like->delete();
        } else {
            $existing_like->restore();
        }
    }
}

我尝试在控制器上执行
(Auth::check()
,但这只隐藏了按钮。如何解决此问题?

更好的选择是不重定向,而是返回未经授权的错误,在JS中捕获该错误并重定向到登录页面

error: function (xhr) {
  if (xhr.status == 401) {
    window.location.href = '/path/to/login';
  }
}
除此之外,您还需要在控制器上返回401状态代码

else{
  abort(401, 'You need to login again.');
}

我试图将该代码放入js
//handle error
中,但是@Aza RnglabI不起作用。如果已修复js代码,请确保也将状态代码添加到控制器中。中止(401)所以js端检测到ajax调用错误,所以在用户点击按钮之前都是这样的,如果没有经过身份验证,它会显示一个错误
试图获取非对象的属性
,但我希望即使是来宾也能看到按钮。(用户在登录之前无法看到按钮)@Aza RnglabWelcome,对不起,我无法提供更多帮助
else{
  abort(401, 'You need to login again.');
}