假設我們要跳過的 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
Comments