Python django,在注册中输入散列密码并将其存储为散列密码
我正在使用openedx(在django上工作),我需要创建一个api来注册来自特定站点的用户,我得到的是一个非正常的哈希密码,我需要将其保存为正常密码 这里的问题是openedx的注册函数散列传递给它的密码 那么,在django中有没有一种方法可以存储密码/注册用户,而无需对密码进行散列 我应该直接使用更新用户的凭据吗Python django,在注册中输入散列密码并将其存储为散列密码,python,django,rest,django-rest-framework,openedx,Python,Django,Rest,Django Rest Framework,Openedx,我正在使用openedx(在django上工作),我需要创建一个api来注册来自特定站点的用户,我得到的是一个非正常的哈希密码,我需要将其保存为正常密码 这里的问题是openedx的注册函数散列传递给它的密码 那么,在django中有没有一种方法可以存储密码/注册用户,而无需对密码进行散列 我应该直接使用更新用户的凭据吗 raw() 任何帮助都将不胜感激,谢谢 我建议覆盖用户模型中的方法setset\u password class MyUser(AbstractBaseUser):
raw()
任何帮助都将不胜感激,谢谢 我建议覆盖用户模型中的方法set
set\u password
class MyUser(AbstractBaseUser):
# if you need to hash passwords for some users.
is_password_hashed = models.BooleanField(default=True)
...
def set_password(self, raw_password):
if self.is_password_hashed:
super(MyUser, self).set_password(raw_password)
else:
self.password = raw_password
如果只想存储非散列密码:
class MyUser(AbstractBaseUser):
...
def set_password(self, raw_password):
self.password = raw_password
或者甚至覆盖默认用户模型
设置密码
方法。我建议覆盖用户模型中的方法集设置密码
class MyUser(AbstractBaseUser):
# if you need to hash passwords for some users.
is_password_hashed = models.BooleanField(default=True)
...
def set_password(self, raw_password):
if self.is_password_hashed:
super(MyUser, self).set_password(raw_password)
else:
self.password = raw_password
如果只想存储非散列密码:
class MyUser(AbstractBaseUser):
...
def set_password(self, raw_password):
self.password = raw_password
甚至可以覆盖默认的用户模型set\u password
方法。它非常简单:
from django.contrib.auth.models import User
User.objects.filter(username="myuser").update(password=hashed_password)
(请记住,密码在数据库中存储为散列值)它非常简单:
from django.contrib.auth.models import User
User.objects.filter(username="myuser").update(password=hashed_password)
(请记住,密码作为散列值存储在数据库中)打开edX
manage\u user
管理命令,在创建新用户时支持此用例
例如:
/manage.py lms--settings=devstack manage\u user janejane@example.com--初始密码散列“pbkdf2_sha256$20000$mRxYkenyBiH6$yIk8aZYmWisW2voX5qP+cAr+i7R/IrZoohGsRK2fy4E=”
但是,该命令需要最新版本的Open edX,如果用户帐户已存在,则该命令将不会产生任何效果
作为替代方案,您可以使用OAuth2在外部应用程序和Open edX之间设置SSO,在这种情况下,Open edX根本不需要存储任何密码。Open edX
manage\u user
management命令在创建新用户时支持此用例
例如:
/manage.py lms--settings=devstack manage\u user janejane@example.com--初始密码散列“pbkdf2_sha256$20000$mRxYkenyBiH6$yIk8aZYmWisW2voX5qP+cAr+i7R/IrZoohGsRK2fy4E=”
但是,该命令需要最新版本的Open edX,如果用户帐户已存在,则该命令将不会产生任何效果
作为替代方案,您可以使用OAuth2在外部应用程序和Open edX之间设置SSO,在这种情况下,Open edX根本不需要存储任何密码。FYI,最好将答案标记为正确,或者提供建议答案不起作用的详细信息。FYI,最好的做法是将答案标记为正确,或者提供建议答案不适用的详细信息。嘿,谢谢你的回答。。你能告诉我一些关于openedx和一些应用程序之间的sso的资料吗?虽然它目前缺少OAuth2的详细信息,但有一些文档,这是最简单的方法。基本上,您需要启用第三方身份验证功能(请参阅文档),然后转到django管理员,并使用django管理员的OAuth2提供程序设置区域来配置OAuth2。嘿,谢谢您的回答。。你能告诉我一些关于openedx和一些应用程序之间的sso的资料吗?虽然它目前缺少OAuth2的详细信息,但有一些文档,这是最简单的方法。本质上,您需要启用第三方身份验证功能(请参阅文档),然后转到django管理员,并使用django管理员的OAuth2提供程序设置区域来配置OAuth2。