Python django用户使用电子邮件作为pk-可能的黑客攻击?

Python django用户使用电子邮件作为pk-可能的黑客攻击?,python,django,authentication,Python,Django,Authentication,我读了很多关于这个话题的书,但没有发现任何听起来像我的想法那样令人满意的东西,也不明白为什么它会引起问题。所以如果你能看一下 我希望在项目中期更改用户身份验证,即避免使用自定义用户模型,因为这需要在第一次迁移之前完成 我是否可以在django.contrib.user.models中将电子邮件字段修改为editable=False,然后添加一个修改后的save(),以便从用户名更新电子邮件?还是反过来?专业的 还有一个不同的一般性问题:我会在venv中做这样的事情,还是可以将整个auth文件夹复

我读了很多关于这个话题的书,但没有发现任何听起来像我的想法那样令人满意的东西,也不明白为什么它会引起问题。所以如果你能看一下

我希望在项目中期更改用户身份验证,即避免使用自定义用户模型,因为这需要在第一次迁移之前完成

我是否可以在
django.contrib.user.models
中将电子邮件字段修改为
editable=False
,然后添加一个修改后的
save()
,以便从用户名更新电子邮件?还是反过来?专业的


还有一个不同的一般性问题:我会在venv中做这样的事情,还是可以将整个auth文件夹复制为本地应用程序?

首先,你的标题似乎与你的问题无关;这是一件好事,因为使用电子邮件作为主键是一个难以置信的坏主意。人们一直在更改电子邮件地址,但PK必须保持不变

其次,绝对不要复制contrib.auth代码。除此之外,这并不能解决迁移问题,只会使迁移变得更糟


一个更好的解决方案是在用户上添加一个预保存信号,您可以在项目中的任何位置执行该操作(理想情况下是在AppConfig
ready
方法中)。而且你不需要为了使电子邮件不可编辑而改变模型;首先,你的标题似乎与你的问题没有任何关系;这是一件好事,因为使用电子邮件作为主键是一个难以置信的坏主意。人们一直在更改电子邮件地址,但PK必须保持不变

其次,绝对不要复制contrib.auth代码。除此之外,这并不能解决迁移问题,只会使迁移变得更糟


一个更好的解决方案是在用户上添加一个预保存信号,您可以在项目中的任何位置执行该操作(理想情况下是在AppConfig
ready
方法中)。而且你不需要为了使电子邮件不可编辑而改变模型;您应该以使用该模型的形式进行操作。

谢谢您的提示;我将研究预保存信号的概念,这将在其他地方有所帮助。但对于这个问题,我偶然发现了一个问题,用户名不允许“@”,这可能就解决了这个问题。。。。如果我删除db.sqlite3和所有迁移,并运行makemigrations将安装所有设置和应用程序,是否会出现问题(旧数据恢复除外)?好吧,我想我可以关闭它,尽管它没有解决我的问题;谢谢你的提示谢谢你的提示;我将研究预保存信号的概念,这将在其他地方有所帮助。但对于这个问题,我偶然发现了一个问题,用户名不允许“@”,这可能就解决了这个问题。。。。如果我删除db.sqlite3和所有迁移,并运行makemigrations将安装所有设置和应用程序,是否会出现问题(旧数据恢复除外)?好吧,我想我可以关闭它,尽管它没有解决我的问题;谢谢你的提示