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