【问题标题】:Django Database and User AuthenticationDjango 数据库和用户身份验证
【发布时间】:2016-12-29 16:27:05
【问题描述】:

这里是新手程序员。我想创建一个拥有数百名用户的登录系统。最初,我得到了一些关于这些用户的数据库信息,格式如下:

student#| first_name | last_name | student_ID |
--------|------------|-----------|------------|
10001   | Bob        | Jones     | Bob100     |
10002   | Andy       | Guo       | And101     |
10003   | Andy       | Sir       | And102     |
10004   | Bob        | Jones     | Bob101     |

名字和姓氏可以相同,但 student# 和 student_ID# 始终是唯一的。 因此,我希望 student_ID 成为 用户名student# 成为 密码。在阅读了一些教程后,我实现了一个非常基本的登录系统,我必须手动创建用户:

python manage.py createsuperuser

然后我使用以下代码对用户进行身份验证:

def auth_view(request):
    username = request.POST.get('username', '')
    password = request.POST.get('password', '')
    user = auth.authenticate(username=username, password=password)

    if user is not None:
        auth.login(request, user)
        return HttpResponseRedirect('/accounts/loggedin')
    else:
        return HttpResponseRedirect('/accounts/invalid')

所以我想了几个选择,想问问你的意见:

  1. 创建一个脚本,解析数据库中的 student# 和 student_ID 并创建用户。
  2. 每当学生登录时,检查用户名(student_ID) 和密码(password) 是否匹配。 (基本上是在编写我自己的身份验证代码?)

我不确定我是否朝着正确的方向前进。任何帮助是极大的赞赏。谢谢。

【问题讨论】:

标签: django authentication psql


【解决方案1】:

我强烈建议不要创建用户密码为学生 ID 的系统。相反,我建议允许用户创建密码并使用您的姓名和 ID 列表来验证和匹配它们作为注册的一部分。

或者,您可以预先填充用户列表并使用 set_password(student ID) 设置密码,并要求用户在 their first logon 上更改密码。

主要的收获是 Django 已经有一个非常好的身份验证系统,它允许用户设置安全密码并使用 bcrypt 正确地散列密码,这同样容易实现。除非您有充分的理由这样做,否则滚动您自己的身份验证真的很糟糕。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    相关资源
    最近更新 更多