laravel中的表單請求類型和CSRF防禦(六)

laravel中爲咱們提供了綁定不一樣http請求類型的函數。php

Route::get('/test', function () {});
Route::post('/test', function () {});
Route::put('/test', function () {});
Route::patch('/test', function () {});
Route::delete('/test', function () {});
Route::options('/test', function () {});

但有些時候,咱們經過建立資源控制器,裏面的 update() 方法綁定的是 PUT 類型的http請求。laravel

這就須要咱們經過表單提交模擬PUT請求。咱們能夠自已添加一個 _method 的隱藏字段,值爲 PUT。函數

<form action="{{ route('test') }}" method="post">
    <input type="hidden" name="_method" value="PUT">
    用戶名:<input type="text" name="name">
    密碼:<input type="password" name="pwd">
    <input type="submit" value="提交">
</form>

也可使用laravel爲咱們提供的 method_field() 方法。post

<form action="{{ route('test') }}" method="post">
    {{ method_field('PUT') }}
    用戶名:<input type="text" name="name">
    密碼:<input type="password" name="pwd">
    <input type="submit" value="提交">
</form>

laravel默認會對每一個提交請求,進行csrf令牌的驗證。爲了經過驗證,須要在表單中添加 _token 隱藏字段。orm

<form action="{{ route('test') }}" method="post">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    用戶名:<input type="text" name="name">
    密碼:<input type="password" name="pwd">
    <input type="submit" value="提交">
</form>

或者使用 csrf_field() 方法。csrf

<form action="{{ route('test') }}" method="post">
    {{ csrf_field() }}
    用戶名:<input type="text" name="name">
    密碼:<input type="password" name="pwd">
    <input type="submit" value="提交">
</form>
相關文章
相關標籤/搜索