【问题标题】:accessing jhipster demo app with postman使用邮递员访问 jhipster 演示应用程序
【发布时间】:2015-06-05 08:57:56
【问题描述】:

我已经创建了 jhipster 演示应用程序,并想使用 postman 之类的工具检查我改编后的 rest api。我尝试过使用基本身份验证,用户和密码都设置为管理员、用户或系统。但是他们都不能访问,得到一个 401。

如果您能给我一个提示如何访问它,那就太好了。

干杯 马库斯

【问题讨论】:

    标签: rest jhipster postman


    【解决方案1】:

    只是一个猜测,但演示应用程序使用 cookie,因此使用的是 CSRF。因此,您需要随请求一起发送正确的 CSRF 令牌。如果您使用令牌方法(而不是 cookie)生成应用程序,则不需要 CSRF。

    查看https://github.com/jhipster/generator-jhipster/issues/363 并在页面上搜索邮递员。

    【讨论】:

    • 您好,感谢您的回答。它引导我走向正确的道路。我用过邮递员打包的应用程序,但没有用。如果我使用邮递员 chrome 扩展程序并且之前登录过我的 restservice,我可以完全访问它。到目前为止,这对我来说已经足够了。
    • 很高兴你知道了!
    【解决方案2】:

    在文件 SecurityConfiguration.java 中更改为

    .antMatchers("/api/**").authenticated()
    

    .antMatchers("/api/**").permitAll()
    

    让您无需任何身份验证即可访问 api。

    注意:这是不安全的,并且会公开您的 API,但在通过邮递员进行测试时可能会有用。

    【讨论】:

      【解决方案3】:

      我的网站允许未经身份验证的用户访问某些部分。因此我觉得 401 错误很烦人。

      我提出了一个拉取请求来修复它,请参见此处: https://github.com/jhipster/generator-jhipster/pull/2623

      它需要访问 api/帐户,但还需要进行一些其他更改以避免 NPE。

      【讨论】:

        【解决方案4】:

        由于 Postman 现在是一个单独的应用程序(而不是扩展程序),它无法直接访问您的 cookie。但是,仍然可以将 Postman 与 session-auth JHipster 应用程序一起使用。

        1. 首先,使用 JHipster 应用进行身份验证
        2. 在浏览器的开发人员工具中,检查对 /api/authentication 的响应中的 Set-Cookie 标头(JSESSIONID 和 X-XSRF-TOKEN)。您还可以在浏览器的开发者控制台中的其他位置找到 cookie,在 Chrome 中它们位于“应用程序”选项卡下。
        3. 在 Postman 中编辑 cookie 以添加 JSESSIONIDX-XSRF-TOKEN cookie。请求的“Cookies”选项卡将如下图所示。
        4. 设置 cookie 后,您的请求将作为您在第 1 步中登录时使用的同一用户进行身份验证。

        有关 Postman 和 JWT 身份验证的帮助,请参阅 this answer

        【讨论】:

        • 这取决于您的身份验证选项(但问题中没有描述...),因此您需要针对 JWT 或 OAuth2 调整此答案。
        • @Jon,谢谢你的回答。不幸的是,我仍然无法使其在我的环境中工作(jHipster 2.27.1、Windows 7、Chrome、Postman 4.9.2、Postman Interceptor;两个 Postman 组件都处于拦截器激活模式;Chrome 和 Postman 重新启动;全部(陈旧) cookie 已刷新)。在这种环境下,我的 Postman 安装也没有提供提到和突出显示的 Cookies 选项卡。发往/api/${SOME_ENTITY} 的 HTTP POST 仍然失败,并显示 403 Forbidden
        • 对于之前的 JHipster 版本,XSRF cookie 名称不同。我相信它被称为CSRF-TOKEN 而不是XSRF-TOKEN。另一种选择是将该令牌作为标头而不是带有 X-XSRF-TOKEN 的 cookie 传递。我不确定为什么您看不到 Cookies 标签,邮递员拦截器可能正在为您处理 - 我没有尝试过
        【解决方案5】:

        如果您在 jhipster 中使用 Oauth2,您需要在 postman 中设置 Oauth2 令牌配置并在发送请求之前获取令牌。

        一旦您的请求成功,您将在 cookie 中获得 JsessionID,下次使用 cookie 并将 Auth 设置为 no auth。然后 cookie 将为您工作。

        【讨论】:

          猜你喜欢
          • 2016-12-04
          • 1970-01-01
          • 2022-10-01
          • 1970-01-01
          • 2014-12-12
          • 2011-05-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多