You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel提交表单出现403未授权错误,求排查方向

表单提交出现403未授权问题排查

提交表单时出现「403 THIS ACTION IS UNAUTHORIZED.」错误,未使用任何授权/认证组件,kernel.php保持Laravel默认配置,相关代码如下:

表单代码

<form action="{{ route('tambahproduk') }}" method="POST">
    @csrf
    <div class="modal-header">                      
        <h4 class="modal-title">Tambah produk</h4>
    </div>
    <div class="modal-body">                    
        <div class="form-group">
            <label>Nama Produk</label>
            <input name="nama_produk" type="text" class="form-control" required>
        </div>
        <div class="form-group">
            <label>Harga</label>
            <input name="harga" type="number" class="form-control" required >
        </div>
        <div class="form-group">
            <label>Kategori</label>
            <input name="kategori" type="text" class="form-control" required >
        </div>
        <div class="form-group">
            <label  for="cars">Status :</label> <br>
                <select name="status" id="cars">
                <option value="Bisa dijual">Bisa dijual</option>
                <option value="Tidak Bisa dijual">Tidak Bisa dijual</option>
                </select>
        </div>                  
    </div>
    <div class="modal-footer">
        <a href="/">Kembali?</a>
        <input type="submit" class="btn btn-success" value="Edit">
    </div>
</form>

路由代码

Route::post('tambahproduk' ,[ProdukController::class, 'store'])->name('tambahproduk');

ProdukController的store方法

public function store(StoreprodukRequest $request)
{
    $request->validate([
        'nama_produk' => 'required',
        'harga' => 'required|integer',
        'kategori' => 'required',
        'status' => 'required'
    ]);

    produk::create([
        'nama_produk' => $request->nama_produk,
        'harga' => $request->harga,
        'kategori' => $request->kategori,
        'status' => $request->status,
    ]);

    $produks = produk::all();
    return view('daftarproduk', compact('produks'));
}

问题原因

你使用的StoreprodukRequest是Laravel的表单请求验证类,该类默认包含authorize()方法,且默认返回false。即使没有手动配置授权/认证组件,这个方法的返回值会直接触发403未授权错误。

解决方案

有两种处理方式:

方式一:修改表单请求类的授权逻辑

找到app/Http/Requests/StoreprodukRequest.php文件,修改authorize()方法,让它返回true:

public function authorize()
{
    return true; // 允许所有请求通过授权验证
}

方式二:改用基础请求类

如果不需要表单请求类的额外功能,直接将控制器方法的参数替换为Illuminate\Http\Request:

use Illuminate\Http\Request;

public function store(Request $request)
{
    // 原验证和逻辑代码保持不变
    $request->validate([
        'nama_produk' => 'required',
        'harga' => 'required|integer',
        'kategori' => 'required',
        'status' => 'required'
    ]);

    produk::create([
        'nama_produk' => $request->nama_produk,
        'harga' => $request->harga,
        'kategori' => $request->kategori,
        'status' => $request->status,
    ]);

    $produks = produk::all();
    return view('daftarproduk', compact('produks'));
}

内容的提问来源于stack exchange,提问作者Tsabit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:52:55