我在窗口上的烧瓶项目。
我正在尝试使用 bcrpyt 登录,但它抛出了无效的盐错误。
login function on index.py
@main.route('/login', methods=['GET', 'POST'])
def login():
print("in login function ")
logging.info('login start')
if request.method == 'POST' and 'signin_username' in request.form and 'signin_password' in request.form:
# assign values on parameter
user_id = request.form['signin_username']
user_pw = request.form['signin_password']
userInfo = madb.getUser(user_id)
print(userInfo)
print('userInfo length',len(userInfo))
if(len(userInfo) > 0):
# password encrypt
from run import bcrypt
pw_hash = bcrypt.generate_password_hash(user_pw).decode('utf-8')
print('pw_hash',pw_hash)
check_pw = userInfo[0][6] # db password.
print('check_pw',check_pw)
if bcrypt.check_password_hash(check_pw, user_pw) == True:
user = UserMixin(userInfo)
login_user(user)
print('login success!')
return redirect('/')
当我运行项目并且网页运行正常时,直到登录页面,当我输入正确的 ID 和密码时,它会在终端上打印出 userInfo Length
。
但它不会继续
pw_hash = bcrypt.generate_password_hash(user_pw).decode('utf-8')
并抛出跟随错误
[2021-02-05 11:58:26,110] ERROR in app: Exception on /login [POST]
Traceback (most recent call last):
File "C:\Users\USER\envs\facnroll_2\lib\site-packages\flask\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\USER\envs\facnroll_2\lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\USER\envs\facnroll_2\lib\site-packages\flask\app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\USER\envs\facnroll_2\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Users\USER\envs\facnroll_2\lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\USER\envs\facnroll_2\lib\site-packages\flask\app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "c:\facnroll_aws_210128\websvr\app\main\index.py", line 487, in login
check_pw = userInfo[0][6] # db password.
File "C:\Users\USER\envs\facnroll_2\lib\site-packages\flask_bcrypt.py", line 193, in check_password_hash
return safe_str_cmp(bcrypt.hashpw(password, pw_hash), pw_hash)
File "C:\Users\USER\envs\facnroll_2\lib\site-packages\bcrypt\__init__.py", line 105, in hashpw
raise ValueError("Invalid salt")
ValueError: Invalid salt
我查看了 invalid salt
错误,但不知道如何解决。
附上项目树
from run import bcrypt
上存在未解决的导入错误,因此
我尝试添加
sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(os.path.abspath(os.paht.dirname(__file__))))))
高于 from run import bcrypt
但它不能解决未解决的导入错误或 invalid salt
错误。
有人请帮忙。
先谢谢了。