簡體   English   中英

Laravel重定向回csrf_token不匹配異常

[英]Laravel redirect back csrf_token mismatch exception

如以下Laravel 5.4的文檔所示:

如果驗證失敗,我將重定向用戶,如下所示:

 return redirect('login')->withErrors('Email/password combination not recognised');

它帶我返回登錄路徑,顯示表單,當我再次單擊提交時,顯示csrf_token不匹配。 無論我使用back()還是redirect(),都會發生相同的事情。

@if(count($errors)>0)
<div class="alert alert-danger" role="alert">
    <strong>Errors:</strong>
    @foreach($errors->all() as $error)
    <li> {{ $error }} </li>
    @endforeach
</div>
@endif

{{ Form::open(['url' => url('login') ]) }}

<div class="form-group">
    <label for="email" class="col-md-4 control-label">Email</label>
    <div class="col-md-6">
        <input id="email" type="email" class="form-control" name="email" value="" required autofocus>

    </div>
</div>
<br>
<br>
<div class="form-group">
    <label for="password" class="col-md-4 control-label">Password</label>
    <div class="col-md-6">
        <input id="password" type="password" class="form-control" name="password" required>

    </div>
</div>

<div class="form-group">
    <div class="col-md-6 col-md-offset-4">
        <div class="checkbox">
            <label>
                <input type="checkbox" name="remember"> Remember Me
            </label>
        </div>
    </div>
</div>

<div class="form-group">
    <div class="col-md-8 col-md-offset-4">
        <button type="submit" class="btn btn-primary">
            Login                                </button>
        </div>
    </div>
</div>
{{ Form::close() }}

確保用戶在重定向之前和之后尚未被激活,並驗證csrf_token

在HTML的開頭使用<meta name="csrf-token" content="{{ csrf_token() }}">

如果使用的是jQuery Ajax,請添加:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

腳本標記內的基本應用布局。

查看https://laravel.com/docs/5.4/csrf

我將其留給以后供以后搜索的人...

當您使用back()或redirect()重定向回以前的形式時。 Form :: open()確實會生成csrf令牌輸入,但會為其提供空值。 通過使用{{csrf_field()}}手動添加它,不會生成此異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM