正在尝试将QR代码身份验证在我的项目中实现。因此,我使用了" Django-Qrauth"模块。我遵循https://github.com/aruseni/django-qrauth中提到的每个步骤,但是正在遇到以下错误。
------------------------------------------------------------------------------------------------------------
Environment:
Request Method: GET
Request URL: http://192.168.17.1:1111/qr/
Django Version: 1.6.5
Python Version: 2.7.0
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'registration',
'qrcode')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'registration.middleware.MobileDetectionMiddleware')
Traceback:
File "D:USERSSrikanthProjectsDjango Projectstaskmandjangocorehandlersbase.py" in get_response
112. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:USERSSrikanthProjectsDjango Projectstaskmandjangocontribauthdecorators.py" in _wrapped_view
22. return view_func(request, *args, **kwargs)
File "D:USERSSrikanthProjectsDjango Projectstaskmanqrauthviews.py" in wrapper
41. return func(*args, **kwargs)
File "D:USERSSrikanthProjectsDjango Projectstaskmanqrauthviews.py" in qr_code_page
54. request.user.id
File "D:USERSSrikanthProjectsDjango Projectstaskmanredisclient.py" in setex
918. return self.execute_command('SETEX', name, time, value)
File "D:USERSSrikanthProjectsDjango Projectstaskmanredisclient.py" in execute_command
461. return self.parse_response(connection, command_name, **options)
File "D:USERSSrikanthProjectsDjango Projectstaskmanredisclient.py" in parse_response
471. response = connection.read_response()
File "D:USERSSrikanthProjectsDjango Projectstaskmanredisconnection.py" in read_response
339. response = self._parser.read_response()
File "D:USERSSrikanthProjectsDjango Projectstaskmanredisconnection.py" in read_response
118. (str(byte), str(response)))
Exception Type: InvalidResponse at /qr/
Exception Value: Protocol Error: <, head
-------------------------------- ERROR ENDS --------------------------------
#settings.py
AUTH_QR_CODE_EXPIRATION_TIME = 600 # Ten minutes
AUTH_QR_CODE_REDIS_KWARGS = {
"host": "192.168.17.1",
"port": 1111,
"db": 0,
}
#urls.py
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^qr/', include('qrauth.urls')),
)
任何人都可以告诉发生什么。
似乎您已经为Django服务器和Redis服务器配置了相同的端口。
Django服务器于192.168.17.1端口1111在调试输出中的Request URL: http://192.168.17.1:1111/qr/
消息证明。另外,settings.py
中的Redis服务器配置指定相同的主机名和端口:
AUTH_QR_CODE_REDIS_KWARGS = {
"host": "192.168.17.1",
"port": 1111,
"db": 0,
}
因此,Django的Redis客户端正在连接到Django服务器,发送redis请求,然后接收以<head>
标签开头的HTML响应。这是可以预期的,因为它是已联系的Django服务器。
您需要更改REDIS设置,以将端口设置为Redis服务器正在侦听的端口。默认情况下,这是端口6379,但是您可以在Redis配置文件中检查。