Signed URLs

未匹配的标注

签名 URL 提供了一种简洁的方法来生成附加了哈希签名的 URL。哈希确保生成的 URL 不被修改或篡改。

注意:
makeSignedUrl 函数接受 Route.makeUrl 方法接受的相同参数集。因此,请务必阅读 Route.makeUrl 的文档。

例如:

Route.makeSignedUrl('verifyEmail', {
  email: 'foo@bar.com',
})

// /verify/foo@bar.com?signature=eyJtZXNzYWdlIjoiL3ZlcmlmeS9mb29AYmFyLmNvbSJ9.Xu-a0xu_E4O0sJxeAhyhUU5TVMPtxHGNz4bY9skxqRo

附加到 URL 的签名是从完整的 URI 字符串生成的。更改 URL 的任何部分都会导致签名无效。

验证签名

你为其生成签名 URL 的路由可以使用 request.hasValidSignature() 方法验证签名。

Route.get('/verify/:email', async ({ request }) => {
  if (request.hasValidSignature()) {
    return 'Marking email as verified'
  }

  return 'Signature is missing or URL was tampered.'
}).as('verifyEmail')

过期的签名 URL

默认情况下,签名 URL 永远存在。但是,你可以在生成时为其添加到期时间。

Route.makeSignedUrl(
  'verifyEmail',
  {
    email: 'foo@bar.com',
  },
  {
    expiresIn: '30m',
  }
)

使用 URL 构建器

你还可以使用 URL 构建器来生成签名 URL。

Route.builder()
  .params({ email: 'foo@bar.com' })
  .makeSigned('verifyEmail', { expiresIn: '30m' })

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/adonisjs/5.x/se...

译文地址:https://learnku.com/docs/adonisjs/5.x/se...

上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~