在“Web”中间件中时Laravel 5.2验证器上的会话错误


session errors on Laravel 5.2 validator while in 'web' middleware

验证错误未存储在我的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,
];
}

验证代码段:

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

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