是不是标准的Django登录验证应该区分大小写?

时间:2013-05-15 20:23:04

标签: django authentication login

我正在研究Django Web界面。根据我读过的所有内容,我们使用的标准Django身份验证应该区分大小写,以便userid,UserId和USERID是三个独立的用户名。

在我的Windows 7计算机上,用户注册过程和登录验证都是区分大小写的,但是当相同的代码移植到我们的Linux服务器时,用户注册过程和登录验证都变得不敏感*所以userid和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

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

1 个答案:

答案 0 :(得分:3)

这与Windows vs Linux无关,或者与Django完全无关。这与您设置数据库的方式有关:在您的服务器上,您正在使用MySQL,并且您可能已将其配置为使用不区分大小写的排序规则(可能是latin1_swedish_ci或utf8_general_ci)。如果您需要区分大小写,请使用bin归类,例如utf8_bin。请参阅MySQL charset/collation docs