【问题标题】:Why I keep getting Error 419 Page expired为什么我不断收到错误 419 页面已过期
【发布时间】:2020-06-12 04:16:17
【问题描述】:

我正在使用 laravel 7 并在我的表单中一直遇到这个问题:

<form class="form-inline " role="form" method="POST" action="{{route('auth.signup')}}">

       <input type="hidden" name="_token" value="{{csrf_token()}}">

       <div class="form-group">
            <input type="email" class="form-control" id="inputEmail" name="email" value="email">
        </div>


         <div class="form-group">
           <input type="password" class="form-control" id="password1" name="password">

         </div>

         <div class="form-group">
            <input type="password" class="form-control" id="password2" name="password_confirmation">

        </div>



          <button type="submit" class="btn btn-primary mx-auto">Sign Up</button>

</form>

我已经改过config/session.php这条线'lifetime' =&gt; env('SESSION_LIFETIME', 1200),

是否有必要显示路由/控制器它们都是基本的

我也尝试删除控制器的整个代码并简单地 dd("signed up") 但我一直遇到同样的问题

我还继续更改了我的 php.ini 文件,但问题仍然存在。

也许要添加的另一条信息是,具有上述表单的注册链接的主页也有自己的表单,带有 a 并且其标记与上述表单中的不同

注册控制器:

    public function postSignup(Request $request)

    {
        $this->validate($request,[
        'email'=>'required|unique:appscheduler_users|email|max:255',
        'name'=>'required|max:255',
        'password'=>'required|confirmed|min:6',
        ]);

        $user=user::create([
                    'email'=>$request->input('email'),
                    'name'=>$request->input('name'),
                    'password'=>bcrypt($request->input('password')),
                    'created'=>date('Y-m-d H:i:s'),
                    'ip'=>$request->ip(),
        ]);

        Auth::login($user);
        if(Session::has('oldUrl')) {
            $oldUrl=Session::get('oldUrl');
            Session::forget('oldUrl');
            return redirect()->to($oldUrl);
                }

        return redirect()
                ->route('home')
                ->with('info','Your Account has been created');
    }




【问题讨论】:

  • 请添加此表单的存储功能
  • 存储功能是指控制器到 action="" 功能吗?我已经用更多细节更新了帖子

标签: laravel csrf


【解决方案1】:

要解决此错误,您首先需要将以下命令之一插入到表单标签中。

@csrf 或 {{ csrf_field }}

如果您的问题没有解决,请执行以下操作:并保留 csrf 标签

1.将以下命令之一插入表单标签@csrf OR {{ csrf_field }}

2.打开.env文件,将SESSION_DRIVER部分的值改为“文件”。

3.那么你应该重置 laravel 缓存。在终端输入以下命令

php artisan view:clear php artisan route:clear php artisan cache:clear

php 工匠配置:缓存

4.在最后一步中,将项目从服务中拔出,然后再次点击 php artisan serve

希望您的问题得到解决

也许你想看看这里 Post request in Laravel - Error - 419 Sorry, your session has expired

【讨论】:

  • 我已经添加了@CSRF,而不是上面帖子中的内容。同样的问题
  • 我只是按照你的建议做了。我的服务器在本地主机上,但我的数据库服务器是一个 aws RDS 实例。不确定这是否会导致问题。
  • 老实说,我之前没有使用过 aws,但您可能想先在 localhost 上尝试,然后如果它工作正常,然后在 aws 上尝试,这是解决此问题的两个最常用的解决方案是@csrf 指令并将会话驱动程序更改为文件
  • 我搬到了 aws,因为我的 localhost xampp 安装不工作。现在我遇到了另一个本地服务器问题,我只是要把它移到我的共享托管服务器上
猜你喜欢
  • 1970-01-01
  • 2020-06-02
  • 2020-05-22
  • 2022-06-11
  • 1970-01-01
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
相关资源
最近更新 更多