我知道这是Laravel中形式之类的已知错误.但是我在Laravel 5.2中遇到了基本身份验证的问题.
我用Laravel创建了auth;
php artisan make:auth
Run Code Online (Sandbox Code Playgroud)
现在我在我的服务器和本地代码上都有相同的代码副本.在我当地,我没有任何问题.但是在我的服务器上,当我尝试注册用户时,我得到错误说TokenMismatchException in VerifyCsrfToken.php Line 67
我的本地和服务器环境都是同步的,但我在注册时一直收到错误.有关如何解决此问题的任何帮助?
Sho*_*aza 70
我假设您$this->middleware('auth');在控制器的构造函数中添加了以使身份验证正常工作.如果您使用以下内容,请在您的登录/注册表单下方的顶部添加以下内容{!! Form::someElement !!}:
{!! csrf_field() !!}
Run Code Online (Sandbox Code Playgroud)
或者,如果您在表单中使用输入标记,只需在<form>标记之后添加:
<input type="hidden" name="_token" value="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)
干杯.
Jay*_*eth 13
我有一个类似的问题,这是一个简单的解决方案.
将其添加到HTML元标记区域:
<meta name="csrf-token" content="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)
然后在您的JQuery参考下,添加以下代码:
<script type="text/javascript">
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
如果您使用HTML表单提交(而不是AJAX),那么您需要:
{{ csrf_field() }}
Run Code Online (Sandbox Code Playgroud)
在您的表单标签内.
小智 10
我正准备拔出头发!
请在session.php配置中检查您的会话cookie域.有一个域选项必须与您的环境相匹配,并且最好使用.env文件进行配置以进行开发.
'domain' => env('COOKIE_DOMAIN', 'some-sensible-default.com'),
Run Code Online (Sandbox Code Playgroud)
您需要在HTML文档的部分中使用这行代码,默认情况下可以这样做,它不会造成任何伤害:
<meta name="csrf-token" content="{{ csrf_token() }}" />
Run Code Online (Sandbox Code Playgroud)
在您的表单中,您需要添加此隐藏的输入字段:
<input type="hidden" name="_token" value="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)
多数民众赞成,为我工作.
小智 8
如果没有任何工作,您可以通过转到App/Http/Middleware/VerifyCsrfToken.php文件并将您的路由添加到protected $ excpt来删除CSRF安全检查.
例如,如果我想从所有路线中删除CSRF保护.
protected $except = [
'/*'
];
Run Code Online (Sandbox Code Playgroud)
PS虽然是一个很好的做法,包括CSRF保护.
我在laravel 5.4上运行的应用程序遇到了同样的问题
php artisan session:table
php artisan make:auth
php artisan migrate
Run Code Online (Sandbox Code Playgroud)
..然后以下命令为我工作:)
chmod 777 storage/framework/sessions/
Run Code Online (Sandbox Code Playgroud)
如果您将SESSION_DOMAIN(在.env中)设置为与HOST_NAME不同,则会出现此问题的另一种可能性
快乐的编码
有很多可能性会导致这个问题.让我提一个.你有没有机会改变你的session.php配置文件?可能是您已将域的值从null更改为您的站点名称或session.php中的任何其他内容
'domain' => null,
此文件中的错误配置可能会导致此问题.
默认情况下,只有浏览器具有HTTPS连接时,会话 cookie 才会发送回服务器。您可以在 .env 文件中将其关闭(不鼓励用于生产)
SESSION_SECURE_COOKIE=false
Run Code Online (Sandbox Code Playgroud)
或者你可以在 config/session.php 中将其关闭
'secure' => false,
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
117575 次 |
| 最近记录: |