【问题标题】:session errors on Laravel 5.2 validator while in 'web' middleware在“网络”中间件中 Laravel 5.2 验证器上的会话错误
【发布时间】:2016-06-18 15:04:48
【问题描述】:

验证错误未存储在我的 Laravel 5.2 应用程序中(新安装,未升级)。此外,$old('value') 在验证失败后不会保留这些值。

我的所有路由都包含在 web 中间件中,我还尝试将 Web 中间件内容移动到 Kernel.php 中的全局 $middleware 变量中。

我还尝试在 artisan 中清除我的路由缓存,并在我的控制器顶部包含 use Illuminate\Foundation\Validation\ValidationException 以查看是否可以使其工作。似乎验证正在处理中,只是没有将其存储在会话中/抛出异常。我这样说是因为Session::flash 也没有以相同的方式工作,并且用户记住我的功能似乎没有被存储,只要 cookie 说它会存储,因为我需要在大约 6 小时后重新登录.

路线设置(我有“常规”公共路线,然后是员工路线:

Route::group(['middleware' => ['web']], function () {
// Basic Route...
 $this->get('/', 'PublicController@index');

 // Staff Route...
  Route::group(['middleware' => 'staff'], function () {
  $this->get('/staffpanel', 'Staff\StaffController@showStaffPanel');
 });
});

内核.php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{

protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\VerifyCsrfToken::class,
];

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
    ],
];

/**
 * The application's route middleware.
 *
 * These middleware may be assigned to groups or used individually.
 *
 * @var array
 */
protected $routeMiddleware = [
    'staff' => \App\Http\Middleware\Staff::class,
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];
}

验证sn-p:

protected function validatorMakeCategory(array $data) {
  return Validator::make($data, [
    'name'           => 'required|max:50|unique:categories',
    'description'    => 'max:255',
  ]);
}

public function postCreateCategory(Request $request) {
  $validator = $this->validatorMakeCategory($request->all());

  if ($validator->fails()) {
    $this->throwValidationException(
      $request, $validator
    );
  }
}

视图中的错误/会话(均未显示):

   @if(Session::has('message'))
          <p class="alert {{ Session::get('alert-class', 'alert-info') }}">{{ Session::get('message') }}</p>
      @endif

      @if (count($errors) > 0)
        <div class="alert alert-danger">
          <ul>
            @foreach ($errors->all() as $error)
              <li>{{ $error }}</li>
            @endforeach
          </ul>
        </div>
      @endif

【问题讨论】:

标签: php session laravel-5.2


【解决方案1】:

我遇到了同样的问题,我解决了删除\App\Http\Middleware\VerifyCsrfToken::class,在受保护的$middleware 和我的路由出Route::group(['middleware' =&gt; ['web']],函数(),但我不知道这以后会不会有任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-28
    • 2017-02-26
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 2014-07-07
    相关资源
    最近更新 更多