【问题标题】:django user with email as pk - hack possible?使用电子邮件作为 pk 的 django 用户 - 可以破解吗?
【发布时间】:2017-02-28 10:22:51
【问题描述】:

我阅读了很多关于该主题的内容,但没有找到任何听起来像我的想法一样令人满意的东西,也不明白为什么会引发问题。所以如果你能看一下......

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

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

还有一个非常普遍的问题:我会在 venv 中做这些事情,还是可以将整个 auth 文件夹复制为本地应用程序?

【问题讨论】:

    标签: python django authentication


    【解决方案1】:

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

    其次,您绝对不应该复制 contrib.auth 代码。除此之外,这不会解决您的迁移问题,只会让它们变得更糟。

    更好的解决方案是在用户上添加一个预保存信号,您可以在项目中的任何位置执行此操作(最好是在 AppConfig ready 方法中)。而且您无需更改模型即可使电子邮件不可编辑;您应该在使用该模型的表单中执行此操作。

    【讨论】:

    • 感谢您的提示;我将研究预保存信号的概念,这将在其他地方有所帮助。但是对于这个问题,我偶然发现了这个问题,那个用户名不允许“@”,这可能会关闭这个问题......如果我删除db.sqlite3会有问题(恢复旧数据除外)和所有迁移,运行 makemigrations 会安装所有设置和应用吗?
    • 好吧,我想我可以关闭它,虽然它没有解决我的问题;谢谢你的提示
    猜你喜欢
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2011-04-02
    • 2012-02-18
    • 2013-07-23
    • 1970-01-01
    相关资源
    最近更新 更多