这是我的登录页面的处理程序,我打算通过 ajax 发布请求使用它。
from argon2 import PasswordHasher
from argon2.exceptions import VerifyMismatchError
class AdminLoginHandler(RequestHandler):
async def post(self):
username = self.get_argument("username")
password = self.get_argument("password")
db_hash = await self.settings['db'].users.find_one({"username":username}, {"password":1})
if not db_hash:
await self.settings['hasher'].verify("","")
self.write("wrong")
return
try:
print(db_hash)
pass_correct = await self.settings['hasher'].verify(db_hash['password'], password)
except VerifyMismatchError:
pass_correct = False
if pass_correct:
self.set_secure_cookie("user", username)
self.write("set?")
else:
self.write("wrong")
设置包括此参数hasher=PasswordHasher()
。
我收到以下错误TypeError: object bool can't be used in 'await' expression
,我知道这是因为我正在调用的函数不返回未来对象而是布尔值。
我的问题是我如何异步使用散列库而不会在散列过程的全部时间内被龙卷风阻塞,我知道这在设计上需要很长时间。