假設我們要跳過的 url 是 /webhook/reply

Laravel 11 之前的實作方式

在 Laravel 11,最容易的方法是修改 AppServiceProvider.php

<span class="line"><span style="color: #D8DEE9FF">class AppServiceProvider extends ServiceProvider</span></span>
<span class="line"><span style="color: #D8DEE9FF">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">    ...</span></span>
<span class="line"><span style="color: #D8DEE9FF">    public </span><span style="color: #81A1C1">function</span><span style="color: #D8DEE9FF"> boot</span><span style="color: #ECEFF4">()</span></span>
<span class="line"><span style="color: #D8DEE9FF">    {</span></span>
<span class="line"><span style="color: #D8DEE9FF">		    ...</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">        \Illuminate\Foundation\</span><span style="color: #81A1C1">Http</span><span style="color: #D8DEE9FF">\Middleware\VerifyCsrfToken::</span><span style="color: #81A1C1">except</span><span style="color: #D8DEE9FF">([</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">webhook/reply</span><span style="color: #ECEFF4">'</span><span style="color: #D8DEE9FF">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #81A1C1">//</span><span style="color: #D8DEE9FF"> 也可以用萬用字元</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">otherwebhook/*</span><span style="color: #ECEFF4">'</span><span style="color: #D8DEE9FF">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">        ]);</span></span>
<span class="line"><span style="color: #D8DEE9FF">    }</span></span>
<span class="line"><span style="color: #D8DEE9FF">}</span></span>

Laravel 12 的實作方式

<span class="line"><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">Application</span><span style="color: #D8DEE9FF">::configure(basePath: dirname(__DIR__))</span></span>
<span class="line"><span style="color: #D8DEE9FF">    ...</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">-></span><span style="color: #D8DEE9FF">withMiddleware(</span><span style="color: #81A1C1">function</span><span style="color: #D8DEE9FF"> (Middleware $middleware) {</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #81A1C1">//</span></span>
<span class="line"><span style="color: #D8DEE9FF">        $middleware</span><span style="color: #81A1C1">-></span><span style="color: #D8DEE9FF">validateCsrfTokens(</span><span style="color: #81A1C1">except</span><span style="color: #D8DEE9FF">: [</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">webhook/reply</span><span style="color: #ECEFF4">'</span><span style="color: #D8DEE9FF">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">'</span><span style="color: #A3BE8C">webhook/*</span><span style="color: #ECEFF4">'</span><span style="color: #D8DEE9FF">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">        ]);</span></span>
<span class="line"><span style="color: #D8DEE9FF">    })</span></span>
<span class="line"><span style="color: #D8DEE9FF">    ...</span></span>

Reference

Laravel 11 - Disable CSRF for a route

https://laravel.com/docs/11.x/csrf

https://laravel.com/docs/12.x/csrf

Last modified: 2025-03-17

Author

Comments

Write a Reply or Comment

Your email address will not be published.