Laravel 5.8 419 页面过期 - 登录后

Kar*_*hik 5 php laravel laravel-5.8

我在 Laravel 5.8 中创建了一个项目。在我的本地环境(PHP 7.2)中,它运行良好。当我在登录后使用 cpanel 将此项目托管到我的服务器(PHP 7.1)时,返回 419 页面过期错误。

Mylogin 表单代码

<form method="POST" action="{{ route('login') }}" id="login-form">
    @csrf
    <div class="form-group">
      <label for="username">{{ __('Username / Email Address') }}</label>
      <input type="text" class="form-control{{ $errors->has('username') ? ' is-invalid' : '' }} boxed" name="username" id="username" value="{{ old('username') }}" required autofocus>
    </div>
    @if ($errors->has('email'))
       <span class="invalid-feedback" role="alert">
          <strong>{{ $errors->first('email') }}</strong>
       </span>
    @endif

    <div class="form-group">
        <label for="password">{{ __('Password') }}</label>
        <input type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }} boxed" name="password" id="password" required>
    </div>
    @if ($errors->has('password'))
        <span class="invalid-feedback" role="alert">
           <strong>{{ $errors->first('password') }}</strong>
        </span>
    @endif

    <div class="form-group" style="margin-bottom: 0px; float:left;">
        @if (Route::has('password.request'))
            <a href="{{ route('password.request') }}" class="forgetpwd">
               {{ __('Forgot Your Password?') }}
            </a>
        @endif
    </div>

    <div class="form-group" style="text-align: center;">

        <button type="submit" class="btn btn-warning" style="padding:0.5rem 1.8rem;">Login</button>
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

我清除了缓存和 Cookie,但是显示了相同的问题。

小智 7

总而言之,您可能缺少@csrf。

只需在表单开头标记行之后添加@csrf 即可。它应该是这样的:

<form class="singn-form" method="POST" action="{{ route('register') }}">
@csrf
....
</form>
Run Code Online (Sandbox Code Playgroud)


小智 6

出现此错误是由于 CSRF 令牌验证失败、错误配置的缓存、权限、不正确的会话设置。当用户提交发布请求时会出现此错误。您可以通过执行以下操作来修复它:

  1. CSRF 令牌验证失败 419 错误的最常见原因是 CSRF 令牌失败。跨站点请求伪造是由服务器生成的唯一加密值。这包含在客户端的 HTTP 请求中。稍后服务器对其进行验证。如果失败,则会导致会话过期错误。因此,您检查 Laravel 配置中的 CSRF 设置。

  2. 由于缓存导致会话过期错误有时,缓存也会导致前端会话过期错误。这可以是服务器缓存和浏览器缓存。因此,请使用php artisan cache:clear.

  3. Laravel 文件和文件夹权限 同样,不正确的文件或文件夹权限也会导致错误。通常,Web 服务器需要对 Laravel 文件夹存储和供应商的写权限。此外,会话存储需要写权限。所以,给权限,

    chmod -R 755 存储

    chmod -R 755 供应商

    chmod -R 644 引导程序/缓存

Laravel 会话设置 最后但并非最不重要的是,会话设置也会导致 419 错误。app/config/session.php 是会话配置文件。检查一些重要参数 - 域和安全。

'domain' => env('SESSION_DOMAIN', null),
'secure' => env('SESSION_SECURE_COOKIE', false), // in case of cookie
Run Code Online (Sandbox Code Playgroud)

这些循序渐进的方法修复了错误并使 Laravel 再次工作。

  • `chmod -R 644 bootstrap/caches` 这将导致以下错误 ` tempnam(): filecreated in the system'stemporary directory ` in laravel 8. 给予 bootstrap/cache 755 权限。 (2认同)

far*_*ooq 5

在 head 部分使用它而不是 @csrf :

<meta name="csrf-token" content="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)