使用会话编写Django身份验证/登录逻辑

时间:2011-09-15 22:58:40

标签: django django-sessions

我还是Django的新手,我正在寻找一种登录方法。这样做的最佳逻辑是什么,并将信息存储在会话中,以便用户可以维护他们的登录?

我有一个用于身份验证的模型,如下所示:

class User(models.Model):
    email_address = models.CharField(max_length=128)
    password = models.CharField(max_length=128) # sha512 of password w/salt
    password_salt = models.CharField(max_length=128) # sha512 of random number as salt

基本上,我会为这样的视图编写一个登录方法:

@ratelimit_post(minutes = 1, requests = 5, key_field = 'email_address')
def login(request):
    requestedUser = User.objects.get(email_address=request.POST['email_address'])

    if requestedUser == None:
        fail_no_user()

    passwordHash = sha512(request.POST['password'] + requestedUser.password_salt)

    if requestedUser.password != passwordHash:
        fail_wrong_password()
    else:
        request.session['user_id'] = user.id
        request.session['is_auth'] = True
        success_login()

这是一种使用Django处理登录和会话的安全方法吗?由于我还是新手,我不确定这是否是一种公认​​的方法。我在这里缺少什么安全和性能方面的东西?

2 个答案:

答案 0 :(得分:2)

可能最好的选择是创建自己的后端。

请参阅此处的文档:https://docs.djangoproject.com/en/dev/topics/auth/#writing-an-authentication-backend

  

编写身份验证后端

     

身份验证后端是一个   实现两个方法的类:get_user(user_id)和   认证(**凭证)。

答案 1 :(得分:0)

Django带有一个非常简单而强大的身份验证系统,here是官方文档。

相关问题