Python 自定义Django登录,无法比较密码
我不熟悉Django和Python。我阅读了文档,标准登录系统对我来说不太合适,因为我想使用电子邮件和密码进行用户登录 因此,我创建了一个新的应用程序,具有视图和模型 这是我的登录功能Python 自定义Django登录,无法比较密码,python,django,Python,Django,我不熟悉Django和Python。我阅读了文档,标准登录系统对我来说不太合适,因为我想使用电子邮件和密码进行用户登录 因此,我创建了一个新的应用程序,具有视图和模型 这是我的登录功能 def login(request): if request.method == 'POST': usermail = request.POST['usermail'] password = request.POST['password'] passwor
def login(request):
if request.method == 'POST':
usermail = request.POST['usermail']
password = request.POST['password']
password = hashlib.md5(password).hexdigest()
if usermail == '' or password == '':
error = u'All fields should be filled'
return render(request, 'login.html', {'error': error})
try:
sql = "SELECT * FROM users_users WHERE userMail=usermail"
user = str(Users.objects.raw(sql)[0])
userInfo = user.split(',')
if userInfo[2] = password:
return render(request, 'login.html', {'error': userInfo}, context_instance=RequestContext(request))
else:
error = u'Email or password is not valid'
return render(request, 'login.html', {'error': error}, context_instance=RequestContext(request))
except:
error = u'User with an email %s does not exist' %usermail
return render(request, 'login.html', {'error': error}, context_instance=RequestContext(request))
return render(request, 'login.html', context_instance=RequestContext(request))
当我试图比较数据库中的密码和用户提供的密码时,就会出现问题
视图的模型:
class Users(models.Model):
"""
This class is used for user authorization
"""
userName = models.CharField(max_length=50, unique=True)
userMail = models.CharField(max_length=50, unique=True)
userPass = models.CharField(max_length=32)
userRole = models.CharField(max_length=12, default='user')
def __unicode__(self):
# return self.userPass
return u'%s, %s, %s, %s' % (self.userName, self.userMail, self.userPass, self.userRole)
不要这样做。Django有一个非常好的、有完整文档记录的系统,在保留身份验证系统的同时,该系统已经过了几年的安全漏洞测试。你的车一点也不安全,你不应该尝试这样做。你不应该重新发明车轮。您应该使用允许添加字段和验证方法的用户类,而不是使用自己的用户类创建自己的登录系统
通过创建您自己的系统,您可以在应用程序中制造安全漏洞,并且您正在失去Django的强大功能之一:它的用户管理和自动生成的well admin 发生了什么问题?小波比桌子。事情就是这样:我不熟悉python和django,但对编程一点也不熟悉,所以这里我只想从数据库中获得一个通行证,而不需要任何安全性操作。这个问题在很多层面上都是错误的,就像所有同时使用的PHP最佳实践一样。我会看到这段代码的噩梦,请查看现有的Django auth系统。@Jay:是的,我想要的儿子:D