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