django - Django 中的身份验证不起作用?

标签 django authentication

我有一个登录和身份验证功能,它从表单中获取输入,验证数据库中的数据,如果正确,则返回 right.html,如果不正确,则返回错误的.html。密码存储在galaxy_user数据库中,uname的输出为:

u'sachitad'

passw 的输出是:

u'f8566297ee28e8a3096497070b37b91d24c24243'



 def login(request):
        if request.method == 'POST':
            username = request.POST['username']
            password = request.POST['password']
            u = ''.join(username)
            p = hashlib.sha1(password).hexdigest()
            a = GalaxyUser.objects.values_list('username', 'password')
            uname = a[0][0]
            passw = a[0][1]
            user = authenticate(uname=u, passw=p)

            if user is not None:
                return render_to_response('right.html', context_instance=RequestContext(request))

            else:
                return render_to_response('wrong.html', context_instance=RequestContext(request))

        else:
            return render_to_response('login.html', context_instance=RequestContext(request))

编辑: Galaxy用户表:

 id | create_time         | update_time         | email                         | password                                 | external | deleted | purged | username | form_values_id | disk_usage |
+----+---------------------+---------------------+-------------------------------+------------------------------------------+----------+---------+--------+----------+----------------+------------+
|  1 | 2013-01-11 15:00:30 | 2013-01-11 15:00:30 | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b2c7c1d7c083f2d5dfd3dbde9cd1dddf" rel="noreferrer noopener nofollow">[email protected]</a>   | f8566297ee28e8a3096497070b37b91d24c24243 |        0 |       0 |      0 | sachitad |           NULL |       NULL |
|  2 | 2013-01-11 15:01:01 | 2013-01-11 15:01:01 | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="5c292f392e6e1c26292e39302f333a28723f3331" rel="noreferrer noopener nofollow">[email protected]</a> | f8566297ee28e8a3096497070b37b91d24c24243 |        0 |       0 |      0 | saugat   |           NULL |       NULL |
+----+---------------------+---------------------+-------------------------------+------------------------------------------+----------+---------+--------+-

我想使用电子邮件和密码进行身份验证。

最佳答案

Django 使用给定算法('md5'、'sha1' 或 'crypt')将密码存储为给定明文密码和盐的十六进制摘要

authenticate() 采用您在注册用户时提供的密码,而不是其哈希版本。您需要提供纯文本密码来验证用户身份。

关于django - Django 中的身份验证不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14272859/

相关文章:

javascript - 强制执行 Facebook 身份验证 : Client-side and server-side

python - 如何在Django中过滤模板中的BooleanField?

mysql - Django - 查询外键 ID 时避免连接?

php - 使用javascript SDK登录后如何获取facebook getuser()

java - 在 Spring Security UsernamePasswordAuthenticationFilter JWT 认证中设置自定义登录 url

Django 使用管理站点添加远程用户

python - 在 DJANGO 模板中总结数据库中的值

python - 在保存到数据库之前在 session 中使用实例

python - django 形式 + 数组的奇怪行为

django - 如何在 postgres 中实现与在 django 中相同的密码代码?