Django项目的现场周边访问控制。
django-perimeter的Python项目详细描述
此包现在需要python3和django 1.11或更高版本。对于以前的版本,请参阅python2分支。
django周长
周界是一个Django应用程序,它提供了中间件,允许你在任何现有的Auth过程中保证你的Django站点的外围。
为什么?
大多数django站点都有某种用户注册和安全模型-一个登录过程、保护某些url的装饰器、用户帐户-django.contrib.auth和相关应用程序(django注册)附带的所有内容。
然而,有时你只想保护整个网站,以防止窥探——典型的例子是在网站上线之前。你想在整件事周围建立一个安全的围墙。如果您可以控制前端web服务器(例如apache、nginx),那么可以使用它们的内置访问控制功能来实现这一点。但是,如果您在托管平台上运行应用程序,则可能无法对这些部分进行管理访问。即使您确实可以控制您的web服务器,但您可能不希望每次授予某人访问权限时都重新配置它。
那时候你需要周界。
Perimeter提供了对整个Django站点(包括管理站点和登录页面)的简单标记访问控制。
它是如何工作的?
一旦您安装并启用了perioder,每个需要访问的人都将需要一个授权令牌(不是身份验证-perioder中没有任何固有的东西可以阻止人们交换/共享令牌-这是一个可接受的用例)。
外围作为中间件运行,它将检查用户的session是否 代币。如果他们有一个有效的令牌,那么他们继续不间断地使用站点。如果它们没有令牌,或者令牌无效(过期或设置为非活动),则它们将重定向到外围“网关”,在那里,它们必须输入有效的令牌及其名称和电子邮件(出于审核目的-此令牌存储在数据库中)。
要创建新令牌,您需要前往管理站点,并在外围应用程序下创建新令牌。如果已将PERIMETER_ENABLED设置为true,则无法访问管理站点(因为周界覆盖除周界“网关”窗体以外的所有内容),因此有一个管理命令(create_access_token)可用于创建第一个令牌。(这是Django设置过程的分析,它提示您创建超级用户。)
设置
- 将“外围”添加到已安装的应用程序中。
- 将“perimeter.middleware.perimeterAccessMiddleware”添加到中间件类列表中
- 添加周边URL-nb必须使用“周边”命名空间
- 在设置文件中添加perimeter_enabled=true。此设置可用于在不同环境中启用或禁用周界。
设置:
PERIMETER_ENABLED=TrueINSTALLED_APPS=(...'perimeter',...)# perimeter must appear after sessions middleware as it relies on there# being a valid request.sessionMIDDLEWARE_CLASSES=[...'django.contrib.sessions.middleware.SessionMiddleware','perimeter.middleware.PerimeterAccessMiddleware',...]
网站网址:
# in site urlsurlpatterns=patterns('',...# NB you must include the namespace, as it is referenced in the appurl(r'^perimeter/',include('perimeter.urls',namespace='perimeter')),...)
测试
该应用程序有一套测试和一个配置为在使用tox时运行它们的tox.ini文件(推荐)。