【问题标题】:How to delete user in laravel 5.7? [duplicate]如何在 laravel 5.7 中删除用户? [复制]
【发布时间】:2019-06-15 17:02:03
【问题描述】:

我正在将我的应用从 laravel 4.2 迁移到 5.7。 我有这个逻辑来删除用户: 此操作在点击时触发

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

$.ajax({
    type: "DELETE",
    url: "{{ URL::to('administrator/admin-delete') }}"+"/"+id
});

在我的路线文件中:

Route::delete('admin-delete', 'UsersController@removeAdminDelete');

在我的控制器中:

public function removeAdminDelete($id)
{
    $user = Admin::find($id);
    File::delete($user->photo);
    $user->delete();
    Session::flash('successDelete', "ok");
    if(Auth::user()->id == $id){
        Auth::user()->logout();
        return Redirect::to("administrator");
    }else{
        return Redirect::back();
    }
}

当我尝试删除用户时,我在控制台中收到此错误:

删除 my_delete_url 419(未知状态)!!

编辑后出现 404 错误!!

【问题讨论】:

    标签: ajax laravel


    【解决方案1】:

    Laravel 中的 419 错误意味着你没有为 csrf 提供令牌。

    dos 所示,您可以将meta 标记添加到您的页面头部,其标记位于:

    <meta name="csrf-token" content="{{ csrf_token() }}">
    

    然后设置您的 ajax 请求以始终包含它:

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

    NB 确保在您拉入 jQuery 之后和发出 ajax 请求之前添加上述代码。


    此外,您的路线应该使用delete 而不是resource

    改变

    Route::resource('admin-delete', 'UsersController@removeAdminDelete');
    

    Route::delete('admin-delete/{id}', 'UsersController@removeAdminDelete');
    

    【讨论】:

    • 我正在编辑我的问题以显示我应用的修改
    • @YoussefBoudaya 我错过了路线的id 参数。我已经更新了我的答案(特别是 Route::delete(...) 位)。
    • 是的,这就是导致问题的原因,并且添加 ajaxsetup 解决了它
    • @YoussefBoudaya 如果这回答了您的问题,请您将其标记为已接受:) 谢谢。
    【解决方案2】:

    好像和csrf token有关。尝试像这样在您的 ajax 调用中添加 csrf 令牌:

    <meta name="csrf-token" id="csrftoken" content="{{ csrf_token() }}">
    

    并使用此标头设置您的 ajax:

    $.ajaxSetup({
      headers: {
        'X-CSRF-TOKEN': $('#csrftoken').attr('content')
      }
    });
    

    【讨论】:

    • 我已经在我的主布局中放置了元标记。我应该如何添加 ajax 设置?
    • 只需在 $.ajax({...}) 之前添加 $.ajaxSetup({ ... })
    【解决方案3】:

    在结束表单标签之前添加这样的

    <form action='' method='post'>
    ......
    @csrf
    </form>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 2019-07-23
      • 1970-01-01
      • 2019-03-27
      • 2021-01-18
      • 1970-01-01
      相关资源
      最近更新 更多