Django数据库和用户身份验证

时间:2016-12-29 16:27:06

标签: django authentication psql

新手程序员在这里。我想创建一个包含数百个用户的登录系统。最初,我会以以下格式获得有关这些用户的一些数据库信息:

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

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

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)和密码(密码)以查看它们是否匹配。 (基本上是编写自己的身份验证代码?)
  3. 我不确定我是否正朝着正确的方向前进。任何帮助是极大的赞赏。感谢。

1 个答案:

答案 0 :(得分:0)

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

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

主要收获是Django已经有了一个非常好的身份验证系统,该系统允许用户设置安全密码,并使用易于实现的bcrypt正确哈希它们。除非您有充分的理由这样做,否则您自己进行身份验证确实很不好。