我正在开发一个项目,目前我们使用 Cognito 用户池进行身份验证,但经过一些研究,我们发现如果我们想要更细粒度的访问控制,我们应该使用身份池。
理论很简单:首先我们创建一个身份池,使用 Cognito 用户池作为身份验证提供者。然后在 API Gateway 中我们设置 Lambda 以使用Authorizer: AWS_IAM. 要访问它,用户现在必须:
第 1 步和第 2 步工作正常,通过测试用户,我们设法获取 JWT 令牌并成功将其交换为 AWS 凭证。它们看起来像这样(出于安全原因进行了修改):
awsAccessKey: ASIAZFDXSW29NWI3QZ01
awsSecretKey: B+DrYdPMFGbDd1VRLSPV387uHT715zs7IsvdNnDk
awsSessionToken: IQoJb3JpZ2luX2VjEA8aCWV1LXdlc3QtMyJHMEUCIQC4kHasZrfnaMezJkcPtDD8YizZlKESas/a5N9juG/wIQIgShWaOIgIc4X9Xrtlc+wiGuSC1AQNncwoac2vFkpJ3gkqxAQIWBAAGgw2NTI5NTE0MDE0MDIiDDuTZ1aGOpVffl3+XCqhBDmjCS3+1vSsMqV1GxZ96WMoIoEC1DMffPrBhc+NnBf94eMOI4g03M5gAm3uKAVCBkKO713TsQMaf4GOqqNemFC8LcJpKNrEQb+c+kJqqf7VWeWxveuGuPdHl1dmD2/lIc8giY0+q4Wgtbgs6i0/gR5HzdPfantrElu+cRNrn/wIq4Akf+aARUm14XsIgq7/1fT9aKSHpTgrnTLHeXLKOyf/lZ947XdH71IHDZXBUdwdPikJP/Rikwill6RRTVw7kGNOoacagCmmK7CD6uh9h0OnoW3Qw5df+zX5Z8U7U55AyQfEyzeB7bW3KH65yJn6sopegxIIFfcG2CLIvtb5cZYImAz/4BdnppYpsrEgLPUTvRAXn6KUa5sXgc5Vd7tJeRo5qpYckrR2qfbebsU+0361BCYK2HxGJqsUyt1GVsEoAosxofpn/61mYJXqfeR0ifCAgL7OMOquvlaUVXhHmnhWnUSIOUQ+XtRc+DxUDjwn5RPD7QTwLHIat7d4BI4gZJPAcMT9gZrBVO/iN88lk5R0M5LBzFwd5jiUW46H/G755I4e5ZHaT1I37TY3tbcObIFGVVNz5iHDpK/NePTJevKTshe8cYxXczOQgos4J/RsNpqouO9qRgT9JDyXjU3Etyxqm9RzbLYgV3fl5WwZl5ofVmrBsy3adq+088qEz5b9cogPgDggA/nQaPv7nAZHT8u0ct/hw230pmXUDGCutjOML2G6ZYGOoUCy+BitAN0SZOYWlbZlYomIGKMNQuXjV4z+S9CEW8VunqW4Rgl7rTba6xbI0DdX9upYEczeln6pTl+2UPEDYf6usayFfMsGDvJXesqC5EOtWco1Z8tem/wDQIH7ZbioQHZ7UJDd5ntUAruFveY7sXmKsQbtah/RB5W5HLYy19hCmyGpYMnVXxR0FcNGImsweNcprtw9MmQqy2SUK9V6Rwn1yIE6svfAT3NVyzp9ILbP/qSQLGHNhm4CNd8+EJZZa9rcmCbQiQ+iBJ8FW+AmRSCC4LiB1dhuH1KsFo88DyNhYdVf3py8XV4CDR7l+UyuZMrIQsERwx9JzwVBjfv9COT948mvyGTY
Run Code Online (Sandbox Code Playgroud)
问题是签字。我们的 Lambda 位于 CloudFront 代理 + API 网关后面。对eg 的请求john.dev.project.io将转发至位于 的“真实”API 源api.dev.project.io。
使用 Postman 和设置AWS Signature,请求不起作用并给出以下错误:
The request signature we calculated does not match the signature you provided. Check your AWS Secret …Run Code Online (Sandbox Code Playgroud) amazon-cloudfront aws-lambda aws-api-gateway aws-signature aws-identitypools
我正在开发一个 Flutter 项目,需要在 Gitlab CI 管道上运行集成测试。
测试在本地运行良好,启动chromedriver -port=4444然后flutter drive --driver=integration_test/test_driver/integration_test.dart --target=integration_test/integration/app_test.dart.
但是,我无法让它们在 CI 中运行。我的 yaml 文件如下所示:
...
test_ui_integration:
needs:
- build_deploy_user_service
- populate_db
tags:
- docker
stage: test_ui_integration
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: always
before_script:
- chromedriver --port=4444 & # launching the chromedriver
- sleep 10
script:
- cd $CI_PROJECT_DIR/ui
- npm ${NODE_INSTALL_OPTIONS:-i}
- npm run build
- flutter drive --driver=integration_test/test_driver/integration_test.dart --target=integration_test/integration/app_test.dart -d chrome --web-run-headless --headless
# - flutter drive --driver=integration_test/test_driver/integration_test.dart --target=integration_test/integration/app_test.dart -d web-server …Run Code Online (Sandbox Code Playgroud) continuous-integration gitlab-ci flutter flutter-test flutter-web
我已经搜索了一段时间但似乎无法找到正确的答案。我有一个基本的 Nuxt 项目,具有以下目录结构(忽略fun.vue):
这个想法是能够导航到具有以下路径的单个帖子http://localhost:3000/posts/1
这是可行的,如果我手动转到.../posts/1我的页面,则定义在_id.vue.
问题是,在我的索引页面中,我无法进入<NuxtLink>单个帖子页面。我有一个基本的 v-for 循环遍历我获取的 posts 数组,如下所示:
<template>
<div>
<div v-for="post in posts" :key="post.id">
{{ post.title }}
<NuxtLink to="`posts/${post.id}`">Link to post</NuxtLink>
</div>
</div>
</template>
Run Code Online (Sandbox Code Playgroud)
例如,我希望在单击第二篇文章的链接后导航到posts/2,但我得到的是/%60posts/$%7Bpost.id%7D%60。为什么模板字符串不能正常转换?我也尝试过使用计算值,但没有成功,并且 Nuxt 路由文档也没有多大帮助。
非常感谢任何与此相关的帮助。