【发布时间】:2026-02-15 12:45:01
【问题描述】:
您好,我已经使用 sudo php artisan serve --host 0.0.0.0 --port 80 在远程服务器上部署了我的 Laravel 应用程序,但是当我登录时,我得到了 TokenMismatchException。该应用程序在我的本地环境中运行良好,我的登录表单确实包含{{ csrf_field() }}
【问题讨论】:
您好,我已经使用 sudo php artisan serve --host 0.0.0.0 --port 80 在远程服务器上部署了我的 Laravel 应用程序,但是当我登录时,我得到了 TokenMismatchException。该应用程序在我的本地环境中运行良好,我的登录表单确实包含{{ csrf_field() }}
【问题讨论】:
首先,您不应该在生产模式下使用php artisan serve 命令。您只需在 laravel 的 public/index.php 文件中指出像 http://or.net/ 这样的 baseUrl。它将使用所有依赖项引导您的 laravel 应用程序。有关在共享服务器上托管 laravel 的更多详细信息,请访问this CW answer。
@sujalPatel 回答了 CSRF 令牌问题的解决方案。你必须添加
{!! csrf_field() !!} 不是{{ csrf_field() }}
【讨论】:
试试这个:
我假设你添加了 $this->middleware('auth');在控制器的构造函数中以使身份验证正常工作。如果您使用的是 {!!表单::someElement !!}:
{!! csrf_field() !!}
或者如果您在表单中使用输入标签,只需在标签之后添加:
<input type="hidden" name="_token" value="{{ csrf_token() }}">
【讨论】: