laravel中间件无法在ajax请求URL中工作

时间:2017-07-18 10:03:24

标签: php jquery ajax laravel middleware

我喜欢使用ajax插入数据库并返回显示它。 我有这样的ajax

$.ajax({
 method: 'POST',
 url: "{{ route('comments.store') }}",
 data: {
 comment: 1,
 comment_text: comment_text,
 post_id: post_id,
 "_token": "{{ csrf_token() }}"
});

和Url路由(' comments.store)受中间件保护(' auth') 在我的控制器中

public function __construct()
{
   $this->middleware('auth')->except(['index']);
}

public function store( Request $request ) {
   if(Auth::check()){
      if ( isset( $request->comment ) ) {
         $comment = new Comment( [
         'comment' => $request->comment_text,
         'user_id' => Auth::id(),
         'post_id' => $request->post_id
      ] );
      $comment->save();
      $comments = Comment::find( $comment->id );
     return response( $comments );
    }
}
return redirect()->route( 'home.post.show', $request->post_id );
}

当用户登录时,它正常工作并响应$ comment row。

但是当用户未登录时,中间件不会将用户重定向到日志记录页面,而是响应错误"未经身份验证的"。

如何解决它需要帮助。谢谢你...

1 个答案:

答案 0 :(得分:0)

向jQuery Ajax添加error回调函数,以便在未授权的情况下将用户重定向到登录页面

$.ajax({
    method: 'POST',
    url: "{{ route('comments.store') }}",
    data: {
        comment: 1,
        comment_text: comment_text,
        post_id: post_id,
        "_token": "{{ csrf_token() }}"
    },
    success: function (data) {

    },
    error : function (jqXHR, textStatus, errorThrown) {
        // User Not Logged In
        // 401 Unauthorized Response
        window.location.href = ' login page';
    }
});