考虑到代码部署在一个时区并且客户端可以在任何地方使用该应用程序,如何在特定时间后禁用 URL

问题描述 投票:0回答:1

我有一个应用程序,其中要单击一个 URL 来进行金融交易,因此出于安全原因,我想在特定时间后禁用此链接,但问题是即使在特定时间段之后链接也不会过期,因为代码部署在一个时区,而客户端在另一时区使用该应用程序。 URL 随机过期。

我想与指定的 URL 过期时间同步,以便当客户端跨时区在任何地方使用该应用程序时,该 URL 将在特定时间后禁用。

我尝试过各种方法:

方法一:利用时间

expiration_time = int(time.time()) + 5

url_temp = f“https://example.com?expiration_time=%7Bexpiration_time%7D”

return {"respmsg": f"""要输入密码,请点击此处输入密码""",}

方法 2:使用 HTML

如果我们在html页面修改,那么它就不能在app中工作。而且我们不想使用这种方法。

方法 3:使用 UTC

从日期时间导入日期时间、时区

utc_time = datetime.utcnow().replace(tzinfo=timezone.utc)

utc_time_str = utc_time.strftime("%Y-%m-%d %H:%M:%S.%f%z+00:00")

utc_time_format = datetime.strptime(utc_time_str, "%Y-%m-%d %H:%M:%S.%f%z+00:00")

expiration_time = int(utc_time_format.timestamp()) + 20

url_temp = f“https://example.com?expiration_time=%7Bexpiration_time%7D”

return {"respmsg": f"""要输入密码,请点击此处输入密码""",}

javascript python html python-3.x client-server
1个回答
0
投票

为了确保 URL 在不同时区一致过期,您可以使用 UTC(协调世界时)作为标准参考。您的第三种方法是正确的,但是您构建 URL 的方式存在一个小问题。您需要以 UTC 格式正确设置过期时间的格式,然后将其包含在 URL 字符串中。以下是修改代码的方法:

from datetime import datetime, timezone

# Get the current time in UTC
utc_time = datetime.utcnow().replace(tzinfo=timezone.utc)

# Add 5 seconds to the current time (adjust this according to your desired expiration time)
expiration_time = utc_time + timedelta(seconds=5)

# Convert expiration time to a UNIX timestamp
expiration_timestamp = int(expiration_time.timestamp())

# Construct the URL with the expiration time
url_temp = f"https://example.com?expiration_time={expiration_timestamp}"

# Return the response with the URL
return {"respmsg": f"""To enter pin, please <a href="{url_temp}" target="_blank">click here to enter pin</a>""",}

这样,无论客户端位于哪个时区,URL 从生成之日起经过指定的持续时间后都会一致过期。请务必根据您的要求调整过期时间(timedelta(秒= 5))。

© www.soinside.com 2019 - 2024. All rights reserved.