django - 在 Django 中覆盖用户的检查密码
问题描述
我正在将 PHP 后端迁移到 Django,我不想让用户更改密码。在 PHP 中,我使用 Bcrypt,它使用 version 2y
,而 Django 使用2b
,使其不兼容。
我已经阅读了人们编写全新哈希器的其他解决方案,但这似乎太难了。我的解决方案是覆盖check_password()
我的User
模型的功能:
def check_password(self, raw_password):
alg_prefix = 'bcrypt_php'
if self.password.startswith(alg_prefix):
return bcrypt.checkpw(bytes(raw_password, 'utf-8'), bytes(self.password[len(alg_prefix):], 'utf-8'))
else:
return super().check_password(raw_password)
bcrypt_php
并保存在开始时添加的旧密码。
问题是:这样做有危险吗?我是否将密码或系统置于危险之中?
解决方案
推荐阅读
- java - Java 打印树状图列表中的项目
- time-complexity - 时间复杂度:如何使用定义计算 logkn?
- javascript - css 和 javascript 文件未链接
- c# - 单独项目中的访问方法,C#,VB
- c# - 不会将值单独分配给方法
- ruby-on-rails - 如果在 Rails 中验证失败,则查找渲染路由
- java - AWS Lambda 和 S3 - 上传的 pdf 文件为空白
- javascript - 在 React 中手动更改 DOM
- python - Python 方法无法识别
- python - Beautifulsoup4,BS4,Python解析问题