Django Web框架的另一个电子邮件身份验证系统
django_email_auth的Python项目详细描述
电子邮件身份验证是Django的基于电子邮件的身份验证后端。它允许您使用django内置的身份验证机制和用户模型,同时通过电子邮件地址而不是用户名对用户进行身份验证。
它基本上重新使用原始的django身份验证代码,向其传递一个自定义表单以允许电子邮件身份验证。整个应用程序结构基于Django CAS使用的结构,即自定义身份验证后端和中间件,用于拦截对原始登录视图的调用(如果使用django管理,则特别有用)。
电子邮件认证应与django 1.3和1.4版本兼容。
电子邮件认证是(c)2009-2012让-查尔斯·巴格纳里斯。请参阅重新分发许可证 信息和一般免责声明。
安装
最简单和首选的方法是从pypi安装,通过pip或通过 易于安装:
$ pip install django_email_auth $ easy_install -U django_email_auth
您也可以下载源代码,并从源代码安装:
$ python setup.py install
然后,在settings.py项目文件中引用中间件和后端。结果设置可能如下:
MIDDLEWARE_CLASSES = ( 'django.middleware.gzip.GZipMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'email_auth.middleware.EmailAuthMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', ) AUTHENTICATION_BACKENDS = ( 'email_auth.backends.EmailBackend', )
如果要使用提供的登录和注销模板而不是自定义模板,请确保模板加载程序设置中有django.template.loaders.app_directories.load_template_source,并将email_auth添加到已安装的_apps设置中。此外,这些模板仅作为示例提供,需要django管理应用程序才能工作,因此也可以将其添加到已安装的应用程序中。例如:
TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.load_template_source', 'django.template.loaders.app_directories.load_template_source', ) INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', 'email_auth', )
如果子类化用户模型而不是使用获取配置文件机制,请使用自定义用户模型设置来指示模型的名称。电子邮件验证将在成功验证后返回自定义用户模型的实例:
CUSTOM_USER_MODEL = 'coaching.Utilisateur'
如果要使用自定义登录视图而不是提供的视图 (email-auth.views.login),添加登录URL映射设置,指向它(谢谢 对于修补程序,Wesley Mason)。
最后,确保您的项目设置了必要的url,以便在url映射中登录和注销您的用户:
(r'^login/$', 'email_auth.views.login'), (r'^logout/$', 'email_auth.views.logout'),
模板
登录和注销视图的模板应该位于registration/login.html和registration/logged-out.html中。标准应用程序提供了email-auth,将应用程序放在已安装的应用程序中,如果要使用这些应用程序,请使用django.template.loaders.app\u directories.load\u template\u sourcetemplate loader。否则,请在根模板文件夹的registration文件夹中提供您的模板,或将模板的任何名称传递到login和logout视图的template\name参数。
信号
为了方便起见,当用户成功登录或注销时会发出信号:
user_logged_in = Signal(providing_args=['request',]) user_logged_out = Signal(providing_args=['request',])
完整登录或注销请求作为参数传递给相关信号。此外,登录信号的发送方是登录用户实例,而注销信号的发送方是刚刚注销的用户实例。
国际化
email-auth使用django国际化机制。确保您的中间件类设置中有django.middleware.locale.localemiddleware来使用它。法语的语言环境文件随应用程序提供。如果您为其他语言创建区域设置文件,请随意派生项目并向我发送一个请求,请求将这些语言包含在分发中。