提供认证组件。
项目描述
各种有用的认证组件。
安装
安装包
pip install incuna-auth
在settings.py中的INSTALLED_APPS添加
INSTALLED_APPS = ( ... incuna_auth, ... )
在ROOT_URLCONF中添加URL
urlpatterns = patterns('' ... url('', include('incuna_auth.urls')), ... )
在settings.py中添加认证URL
from django.core.urlresolvers import reverse_lazy ... LOGIN_URL = reverse_lazy('login') LOGOUT_URL = reverse_lazy('logout')
将表添加到数据库
python manage.py syncdb
警告: 包含一个初始数据固定程序,该程序创建一个admin_sso.Assignment,将任何incuna.com电子邮件地址的用户分配给管理员用户。
为了允许匿名访问使用LoginRequiredMiddleware时默认不可访问的URL,请将LOGIN_EXEMPT_URLS添加到settings.py
LOGIN_EXEMPT_URLS = [ r'^about/', ]
后端
待办事项:添加后端概述。
中间件
incuna_auth包含几个有用的中间件,可用于在项目中强制执行身份验证。
中间件是可扩展的,与FeinCMS兼容。
有两个主要的中间件类可以直接安装到您的项目中。要添加这些中间件之一,请将incuna_auth.middleware.[MiddlewareClassName]添加到项目的settings中的MIDDLEWARE_CLASSES。
LoginRequiredMiddleware:强制要求用户必须进行身份验证才能访问任何受保护的URL。
此中间件的覆盖范围可以通过Django设置中的LOGIN_PROTECTED_URLS和LOGIN_EXEMPT_URLS轻松定制。如果这些设置不存在,则中间件会保护除settings.LOGIN_URL和settings.LOGOUT_URL之外的所有URL;否则,它将应用于LOGIN_PROTECTED_URLS中的每个URL,除非它们在LOGIN_EXEMPT_URLS中。
FeinCMSLoginRequiredMiddleware:强制要求用户必须进行身份验证才能访问具有STATE_AUTH_ONLY访问状态的FeinCMS资源。
由于CMS页面具有不可预测的URL,并且希望它们能够配备可定制的身份验证,因此仅使用LoginRequiredMiddleware本身不适合与FeinCMS一起使用。这个中间件旨在与一个扩展结合使用,该扩展向FeinCMS页面或类似项目添加一个新字段access_state。我们已经包含了一个混合类,incuna_auth.models.AccessStateExtensionMixin,使得创建此类扩展变得简单。
要使用FeinCMSLoginRequiredMiddleware来保护除STATE_AUTH_ONLY之外的其他访问状态,创建它的子类并重写其get_protected_states方法。您还需要确保您的AccessStateExtensionMixin子类的CUSTOM_STATES属性包含您想要保护的访问状态。
定制中间件系统
中间件系统易于扩展,并且在其背后有一个小的父类框架,这使得创建自己的类似中间件变得简单,所有这些都在incuna_auth.middleware.permission模块中。BasePermissionMiddleware是基类,URLPermissionMiddleware和FeinCMSPermissionMiddleware分别是LoginRequiredMiddleware和FeinCMSLoginRequiredMiddleware的骨干,以及一个提供适当的拒绝访问条件和错误输出的混合类。
任何中间件类都有一个核心方法叫做process_request,Django在通过此中间件的任何请求上都调用该方法。该permission模块中间件通过首先检查是否应该通过名为is_resource_protected的方法保护请求的资源,然后检查是否应该允许请求访问受保护的资源使用deny_access_condition来实现。如果请求应该被拒绝,中间件将执行一个名为deny_access的方法,该方法返回一个错误响应(403或302,取决于请求的性质);如果资源不受保护或请求被允许,process_request只需返回None以执行无操作。这是标准中间件行为。
翻译URL
默认情况下,禁用了URL翻译。要启用URL翻译,请在您的保护设置文件中将TRANSLATE_URLS=True设置为True。有关Django中翻译URL的更多信息,请参阅https://docs.django.ac.cn/en/dev/topics/i18n/translation/#url-internationalization。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。