Laravel:仅在iOS(iPhone和iPad)上的令牌不匹配例外

时间:2015-08-22 23:24:21

标签: php ios laravel laravel-4

我在移动设备上遇到了一些问题,特别是iOS,当我登录我的应用程序或在有令牌的表单上搜索某些内容时,我得到 Illuminate \ Session \ TokenMismatchException 在具有

的filters.php第88行
Route::filter('csrf', function() {
  if(Session::token() !== Input::get('_token')) {
        throw new Illuminate\Session\TokenMismatchException;
  }
});

在Controller上登录的代码:

    $auth = Auth::attempt(array(
        'email' => Input::get('username'),
        'password' => Input::get('password')
    ), true);

    if($auth){
        # Redirect to intended page
        return Redirect::intended('/dashboard');
    } else {
        return Redirect::route('signin')
        ->with('global-error','Incorrect email or password.');
    }

HTML页面上的表单标记代码:

<form method="post" action="{{ URL::route('signin-post') }}">
   <!-- Token is echoed like this: -->
   {{ Form::token() }}

我能解决这个问题吗?在PC和Android设备上完美运行,如果我删除该过滤器,它适用于iOS,否则我得到例外。

其他详细信息:

  • 这发生在两个不同的项目
  • 我使用Laravel 4.2和PHP 5.5.6

提前致谢

1 个答案:

答案 0 :(得分:1)

这是因为Safari阻止了cookie。将其设置为允许cookie,它将起作用。