Swagger UI怎么支持Laravel的CSRF Token?

有些同學在做前后端分離項目時用Swagger UI會碰到沒有CSRF Token的報錯,本文給出了支持CSRF Token的思路,其實很簡單。

另外,當前Swagger UI已經更新到了3.x版本,截止到目前為止官方還沒確定地給出好的方案(有討論在這里),不過看節奏應該在六月份內,所以我也不打算研究比較Hack的方法,但如果你正好做過,歡迎在評論中給大家分享。3.x是一個重構的版本,底層更統一不過還有待增強功能,靜待官方繼續努力。

Swagger UI 版本 2.x

思路真的很簡單。按照Laravel官方文檔所說,在前端發起請求的時候附帶一個請求頭(Header)就行了。如果Swagger UI的界面是PHP輸出的則最好辦,示例如下:


// 省略若干行...

<!-- 添加下面這行到Swagger UI的Blade模版中<head>標簽中 -->
<meta name="csrf-token" content="{{ csrf_token() }}">

// 省略若干行...

<script>

// 省略若干行...

window.swaggerUi.load();

// 添加下面這段代碼到"window.swaggerUi.load();"的后面
swaggerUi.api.clientAuthorizations.add(
    "X-CSRF-TOKEN", 
    new SwaggerClient.ApiKeyAuthorization(
        "X-CSRF-TOKEN", 
        $('meta[name="csrf-token"]').attr('content'),
        "header"
    )
);

// 省略若干行...

</script>

Swagger UI的API文檔在這里

如果Swagger UI不是由PHP渲染輸出就比較麻煩了,能改代碼的話,可以讓前端自動設置Token,不然看看關于Swagger授權相關開發方法也許能夠曲線救國實現。

Swagger UI 版本 3.x

關注這里

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,242評論 25 708
  • 情絲斷離, 思念殘碎、 離別之愁、 望遠相思、 斬斷今世宿緣、 斷別我們的遇見、 封心殘魂、 只留一雙眼望著一望無...
    三笑草人閱讀 224評論 0 0
  • 1、感恩父母給予我生命。 2、感恩祖輩將我養育。 3、感恩母親與祖母為家做出的巨大付出。 4、感恩妻子一直的包容與...
    朱曉軍閱讀 186評論 0 2
  • 如何才能找到一個優秀的配偶,最好的方式就是讓自己配得上她/他,因為優秀配偶都不是傻瓜。 聽過太多美好的婚姻關系是大...
    隔著銀河閱讀 263評論 0 0
  • 導讀 新房裝修中,無論空間的巨細是多少,書房的安置都應該是舒服高雅的,書房的首要作用則是供家人工作和學習的當地,也...
    業主之家閱讀 386評論 0 2