[英]How to set username and password for basic auth in flask restx swagger?
[英]strip username and password from url with basic auth
我正在嘗試從 url 中獲取用戶名和密碼,然后將其重新組合在一起,以完整的形式再次使用它,但沒有基本的身份驗證部分。
我正在嘗試類似下面的內容,但結果不是我所期望的。
from urllib.parse import urlsplit, urlunsplit
parts = urlsplit("http://user:pwd@host:8080/path?query=foo", allow_fragments=True)
auth = (parts.username, parts.password)
print(urlunsplit((parts.scheme, parts.hostname, str(parts.port), parts.path, parts.query)))
# http://host/8080?/path#query=foo
如果我可以在部件上將用戶名和密碼設置為 None 並且只調用geturl
但我收到無法更改屬性的錯誤,那就更好了。
from urllib.parse import urlsplit
parts = urlsplit("http://user:pwd@host:8080/path?query=foo", allow_fragments=True)
auth = (parts.username, parts.password)
parts.password = None
parts.username = None
print(parts.geturl())
# AttributeError: can't set attribute
請注意,我想將用戶名和密碼保存在一個單獨的元組中。
urlunsplit
需要一個看起來與urlsplit
返回的相同的元組。 該元組中的第二個元素是netloc
- 看起來像: user:pwd@host:port
所以你需要傳遞類似的東西。 你可以通過修改parts.netloc
你從得到urlsplit
和它傳遞給urlunsplit
:
from urllib.parse import urlsplit, urlunsplit
parts = urlsplit("http://user:pwd@host:8080/path?query=foo", allow_fragments=True)
auth = (parts.username, parts.password)
netloc = parts.netloc.split('@')[1] # ignore the auth part. You should check the length after the split obviously
reconstruction_parts = (parts.scheme, netloc, parts.path, parts.query, parts.fragment)
print(urlunsplit(reconstruction_parts))
結果:
http://host:8080/path?query=foo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.