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,422评论 25 708
  • 情丝断离, 思念残碎、 离别之愁、 望远相思、 斩断今世宿缘、 断别我们的遇见、 封心残魂、 只留一双眼望着一望无...
    三笑草人阅读 224评论 0 0
  • 1、感恩父母给予我生命。 2、感恩祖辈将我养育。 3、感恩母亲与祖母为家做出的巨大付出。 4、感恩妻子一直的包容与...
    朱晓军阅读 186评论 0 2
  • 如何才能找到一个优秀的配偶,最好的方式就是让自己配得上她/他,因为优秀配偶都不是傻瓜。 听过太多美好的婚姻关系是大...
    隔着银河阅读 263评论 0 0
  • 导读 新房装修中,无论空间的巨细是多少,书房的安置都应该是舒服高雅的,书房的首要作用则是供家人工作和学习的当地,也...
    业主之家阅读 387评论 0 2