我试图从Flask使用check_password_hash,从我的MySQL数据库获取一个值。我可以从数据库中获取密码,但是当我使用该密码时,返回一个False值。这是我的代码:
class AuthUser(Resource):
def post(self):
try:
parser = reqparse.RequestParser()
parser.add_argument('username', type=str, help= 'Username')
parser.add_argument('password', type=str, help= 'Password')
args = parser.parse_args()
_userUsername = args['username']
_userPassword = args['password']
conn = mysql.connect()
cursor = conn.cursor()
cursor.callproc('gsAuthUser', (_userUsername,))
data = cursor.fetchall()
cursor.callproc('gsGetPassword', (_userUsername,))
pwd = cursor.fetchall()
print(pwd)
_userPassDecrypt = check_password_hash(pwd, _userPassword)
print(_userPassDecrypt)
except Exception as e:
return {'error': str(e)}
api.add_resource(CreateUser, '/CreateUser') api.add_resource(AuthUser, '/AuthUser')
这是输出:
((u'pbkdf2:sha256:50000$QtDUZdwY$fa7d211dc9e3db9513b7e11096e257272b2edde3af3e2a0d33ca5cba53a942c7',),)
我想我只需要sha256之后的值:但是我无法获取它。 有人可以帮助我吗?
谢谢。
答案 0 :(得分:1)
这应该可以,但是可能有更好的方法:
except Exception as e:
return {'error': str(e.split(':')[2][:-5])}
答案 1 :(得分:0)
现在正在工作!谢谢! 这是我所做的:
cursor.callproc('gsGetPassword',(_userUsername,)) pwd_db = cursor.fetchall()
pwd_str = str(pwd_db)
pwd = pwd_str.split('(')[2][2:-5]
_userPassDecrypt = check_password_hash(pwd, _userPassword)
if (len(data) > 0):
if(_userPassDecrypt):
# if(str(data[0][2]) == _userPassDecrypt):
return {'StatusCode': '200', 'UserID': str(data[0][0])}
else:
return {'StatusCode': '100', 'Message':'Authentication Failure'}
except Exception as e:
return {'error': str(e)}