使用Flask签名和验证URL

时间:2019-06-30 14:02:00

标签: python flask

我正在使用Flask构建API,我想使用HMAC签名的URL。但是,我找不到能与Flask的url_for机制配合使用的任何标准实现。

理想情况下,我希望能够支持通过请求路由功能和GET查询字符串发送的参数,而不必事先知道哪个。

我设法找到的唯一用于在Python中处理URL签名的库是Ska,它不适合我的需要,因为它想处理其自己的所有查询字符串构建。特别是,如果传递一个flask.url_for URL,则该URL已经包含查询字符串将导致无效URL:

>>> ska.sign_url(url='http://example.com/foo?bar=baz',secret_key='qwerpoiu',auth_user='')
'http://example.com/foo?bar=baz?signature=Fz3fKO3BqD6o4mmMn4EAg9f6pts%3D&auth_user=&valid_until=1561903773.0&extra='

(请注意,结果URL中的辅助?应该是&。)

由于Flask在解析和构建URL方面已经做得非常出色,因此是否存在用于签名和验证Flask生成的URL的标准模式?

1 个答案:

答案 0 :(得分:0)

我最终要做的是在对URL进行签名之前对其进行解析,然后如果存在现有查询字符串,则将for lower in range(lower, upper + 1): for x in range(2, lower): if lower % x == 0: break else: print(f'{lower} is prime') 的{​​{1}}传递给suffix;例如:

'&'