1

我对 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 处理登录和会话的安全方式吗?由于我还是新手,我不确定这是否是一种公认​​的方法。我在这里缺少什么安全性和性能方面的东西吗?

4

2 回答 2

2

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

在此处查看文档:https ://docs.djangoproject.com/en/dev/topics/auth/#writing-an-authentication-backend

编写身份验证后端

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

于 2011-09-16T02:04:37.843 回答
0

Django 自带了一个非常简单而强大的认证系统,这里是官方文档。

于 2011-09-16T07:20:08.613 回答