【发布时间】:2018-11-09 17:44:50
【问题描述】:
我有:
刀片
<form class="form-horizontal was-validated" method="POST" action="{{ route('account.applications.index')}}">
{{ csrf_field() }}
{{-- yadda yadda yadda --}}
<div class="form-group row">
<label class="col-sm-2 col-form-label"> </label>
<div class="col-sm-10">
<input id="application_type" type="hidden" name="application_type" value="{{ Request::get('application') }}">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
控制器收到:
public function store(Request $request)
{
$requestData = $request->all();
$requestData['application_id'] = strtolower(trim($requestData['application_id'].'.'.config('app.fqdn_base')));
$request->replace($requestData);
$values = $this->validate($request, [
'application_type' => 'required|exists:applications,name',
/* other validations */
]);
$exitCode = Artisan::call('tenant:create', [
/* passing param here */
]);
$host = Hostname::where('fqdn', $values["application_id"])->first();
$web = $host->website;
$web->name = $values["application_name"];
$web->application_id = Application::where('name', '=', $values["application_type"])->pluck('id')->first();
$web->owner = auth()->id();
$web->save();
$applications = Application::where('id', '!=', '0')->get();
return view('admin.applications', [ "applications" => $applications]);
}
上面的代码工作正常,除了... CSRF 函数,我检查了我是否可以从请求中检索 CSRF 值。
但是,一旦我的交易完成并重定向到我想要的页面,如果我按 F5 它将重新提交表单,这应该会导致 CSRF 不匹配,但在我的情况下,它没有。
是否有打开 CSRF 验证的特定方法?
【问题讨论】:
-
你能发布上述请求/功能的 HTTP 请求吗?
-
请确保您没有从 CSRF 保护中排除上述 URL。参考:laravel.com/docs/5.6/csrf#csrf-excluding-uris
-
@SavanGadhiya,不,不排除。我可以看到 _token 是根据请求参数提交的:
+request: ParameterBag {#43 ▼ #parameters: array:6 [▼ "_token" => "LI3A2K6NQiTYnBHJBNGMgV2bs7equWW8TnGZ999" "application_id" => "asdasdasm" "application_name" => "1asdas" "password" => "asdfasdf" "password_confirmation" => "asdfasdf" "application_type" => "emm" ] }
标签: laravel-5 csrf laravel-5.6 csrf-protection