---
# System prepended metadata

title: Laravel Form Request 返回 403 問題
tags: [Laravel]

---

# Laravel Form Request 返回 403 問題

jQuery 程式碼
```javascript=
@section('scriptsAfterJs')
<script>
  $(document).ready(function () {
    .
    .
    .
    // 加入購物車按鈕點擊事件
    $('.btn-add-to-cart').click(function() {
      // 請求加入購物車接口
      axios.post('{{ route('cart.add') }}', {
        sku_id: $('label.active input[name=skus]').val(),
        amount: $('.cart_amount input').val(),
      }).then(function() { // 請求成功執行此回調
          swal.fire('加入購物車成功', '', 'success');
        }, function(error) { // 請求失敗執行此回調
          if (error.response.status === 401) {
            // HTTP 狀態碼為 401 代表用戶未登入
            swal.fire('請先登入', '', 'error');
          } else if (error.response.status === 422) {
            // HTTP 狀態碼為 422 代表用戶輸入驗證失敗
            var html = '<div>';
            _.each(error.response.data.errors, function(errors) {
              _.each(errors, function(error) {
                html += error + '<br>';
              })
            });
            html += '</div>';
            swal.fire({content: $(html)[0], icon: 'error'})
          } else {
            // 其他情況應該是系統故障
            swal.fire('系統錯誤', '', 'error');
          }
        });
    });
```

在做點擊按鈕加入購物車功能時，不知道為什麼總是得到系統錯誤的提示，但測試使用者未登入的反應卻是正常的，如下圖所示：
![](https://i.imgur.com/DDIQRMe.png)
(使用者已登入，輸入格式也正確的情況)

![](https://i.imgur.com/8inHQMe.png)
(使用者未登入)

後來發現原來自定義的 `AddCartRequest` 也要添加權限
```php=
/**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }
```
改好後就成功加入購物車了
![](https://i.imgur.com/cVjfhae.png)

資料庫也有寫入記錄
![](https://i.imgur.com/IvvOpHZ.png)

###### tags: `Laravel`