美文网首页PHP学习WebLaravel开发实践
Swagger UI怎么支持Laravel的CSRF Token

Swagger UI怎么支持Laravel的CSRF Token

作者: 该叶无法找到 | 来源:发表于2017-05-25 23:03 被阅读225次

    有些同学在做前后端分离项目时用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

    关注这里

    相关文章

      网友评论

        本文标题:Swagger UI怎么支持Laravel的CSRF Token

        本文链接:https://www.haomeiwen.com/subject/ugxtfxtx.html