2

我正在开发一个 Django Web 界面。根据我阅读的所有内容,我们正在使用的标准 Django 身份验证应该区分大小写,因此 userid、UserId 和 USERID 是三个单独的用户名。

在我的 Windows 7 机器上,正如预期的那样,用户注册过程和登录身份验证都区分大小写,但是当将相同的代码移植到我们的 Linux 服务器时,用户注册过程和登录身份验证都变得不区分大小写,因此用户 ID和 USERID 被认为是相同的。

现在,由于注册和身份验证过程都发生了变化,我们团队担心注册用户被其他注册用户隐藏的担忧已经解除,但我仍然担心我们 Linux 服务器上的 Django 功能与文档相反。

我们的 global_settings.py 包含:

    AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)

和 settings.py 包括:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
'    django.contrib.staticfiles',

我可以在两台机器上看到的唯一区别是:

             case sensitive   case-insensitive
             =========        ======
OS           Windows          Linux
database     SqLite           MySQL
Django ver.  1.4.5            1.4.? / 1.5

谁能解释行为上的差异并告诉我是否有任何副作用需要注意?谢谢!

4

1 回答 1

3

这与 Windows 与 Linux 无关,甚至根本与 Django 无关。这与您设置数据库的方式有关:在您的服务器上,您使用的是 MySQL,并且您可能已将其配置为使用不区分大小写的排序规则(可能是 latin1_swedish_ci 或 utf8_general_ci)。如果需要区分大小写,请使用binutf8_bin 等排序规则。请参阅MySQL charset/collat​​ion 文档

于 2013-05-15T22:06:28.653 回答