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.htmlregistration/logged-out.html中。标准应用程序提供了email-auth,将应用程序放在已安装的应用程序中,如果要使用这些应用程序,请使用django.template.loaders.app\u directories.load\u template\u sourcetemplate loader。否则,请在根模板文件夹的registration文件夹中提供您的模板,或将模板的任何名称传递到loginlogout视图的template\name参数。

信号

为了方便起见,当用户成功登录或注销时会发出信号:

user_logged_in = Signal(providing_args=['request',])
user_logged_out = Signal(providing_args=['request',])

完整登录或注销请求作为参数传递给相关信号。此外,登录信号的发送方是登录用户实例,而注销信号的发送方是刚刚注销的用户实例。

国际化

email-auth使用django国际化机制。确保您的中间件类设置中有django.middleware.locale.localemiddleware来使用它。法语的语言环境文件随应用程序提供。如果您为其他语言创建区域设置文件,请随意派生项目并向我发送一个请求,请求将这些语言包含在分发中。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像