php - Laravel verifyCsrfToken 异常不起作用

标签 php ajax laravel

我正在尝试使用 Laravel 5 制作一个简单的 Ajax 帖子。我读到 Csrf token 匹配存在问题,我可以将我的 uri 放入 verifyCsrfToken 期望中以解决此问题。我的代码是否搞砸了?我怎样才能让它发挥作用?这是我所拥有的:

HTML:

<div id = "event-carousel" class = "carousel slide">

                                                <div id = "event-news" class = "carousel-inner">
                                                    {{--*/ $isFirst = true; /*--}}
                                                    @foreach($events as $event)
                                                        <div class="item{{{ $isFirst ? ' active' : '' }}}">
                                                          <div class = "foto we">
                                                            <img src ="/assets/image/{{$event->photo}}" alt = "intexhange" class= "img-responsive">
                                                          </div>
                                                          <div class = "mask">
                                                                <h1>{{$event->title}}</h1>
                                                                <div class = "secinfo">
                                                                    <p>{{$event->teacher}}</p>
                                                                    <p>{{$event->location}}</p>
                                                                    <p>{{$event->published_at}}</p>
                                                                </div>
                                                              <div class = pitch>
                                                                <p class = "subhead-how">{{$event->description}}</p>
                                                                 {!!Form::open(array('url' => 'book')) !!}
                                                                      {!! Form::hidden('title', $event->title, ['class' => 'form-control']) !!}
                                                                      {!! Form::hidden('user_id', $myid, ['class' => 'form-control']) !!}
                                                                      <input type="hidden" id="token" value="{{ csrf_token() }}">
                                          <span href="#event-carousel" data-slide="prev"class = "glyphicon glyphicon-arrow-left"></span>{!!Form::button('Join Activity', array('type' => 'submit', 'class' => 'btn btn-danger jact'))!!}<span href="#event-carousel" data-slide="next" class = "glyphicon glyphicon-arrow-right"></span>
                                                                  {!! Form::close() !!}
                                                              </div>
                                                          </div>
                                                    {{--*/ $isFirst = false; /*--}}
                                                    </div>
                                                    @endforeach
                                            </div>
                                           </div>

JS:

$('.jact').click(function(e){
   e.preventDefault();


   var title = $(this).find('input[title=title]').val();
   var user_id = $(this).find('input[user_id=user_id]').val();

   $.post('book', {title: title, user_id: user_id}, function(data){
       console.log(data);
   })

});

Controller :

 public function book()
{

    if(Request::ajax()){

        return Response::json(Input::all());

    }
}

验证CsrfToken:

  class VerifyCsrfToken extends BaseVerifier
{

    protected $except = [
        'book/*'
    ];
}

最佳答案

$except 功能使用 Illuminate\Http\Request::is() 方法。它循环遍历 $ except 数组并针对每个条目测试当前请求。如果匹配,则跳过验证。

从代码来看,您似乎正在发布到 book,而不是 book 下的网址。如果您要调用 $request->is('book/*'),它将返回 false,因为您不在 book 下的网址。

如果您想忽略 book 及其所有后代,您将需要这样:

class VerifyCsrfToken extends BaseVerifier
{
    protected $except = [
        'book',
        'book/*'
    ];
}

关于php - Laravel verifyCsrfToken 异常不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32751063/

相关文章:

php - 使用 PHP 调用未注册的 DLL

php - 通过ajax从php到jquery的数组

php - csv 未使用 laravel 上传到数据库

php - laravel 如何优化一个表中的简单 where 查询

mysql - 将两个查询组合为单个 laravel

php - 为我网站的所有用户创建个人 URL

php - 如果使用 group by 进行 mysql SUM 查询时没有记录,则将其设为 0 而不是 null

php - 使用 PHP 添加到 MySQL 会添加两次并出现外部 ID 约束问题

php - 滚动到页面底部时使用 ajax 加载 PHP 代码-不适用于 iPhone

javascript - 如何正确分页数据表中的结果(ajax,服务器端)?