Django项目的现场周边访问控制。

django-perimeter的Python项目详细描述


https://badge.fury.io/py/django-perimeter.svghttps://travis-ci.org/yunojuno/django-perimeter.svg?branch=master

此包现在需要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设置过程的分析,它提示您创建超级用户。)

设置

  1. 将“外围”添加到已安装的应用程序中。
  2. 将“perimeter.middleware.perimeterAccessMiddleware”添加到中间件类列表中
  3. 添加周边URL-nb必须使用“周边”命名空间
  4. 在设置文件中添加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文件(推荐)。

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

推荐PyPI第三方库


热门话题
如何表示1。。Java中的n关系   java在安卓应用程序中添加polaris viewer   Java字符串::replaceAll仅替换第一个出现(可能不正确的正则表达式)   java Tomcat/JBoss部署后脚本   如何在Heroku Java应用程序中运行发出web请求的周期进程   java如何以纳秒为单位证明算法的时间   Solaris上的java自定义ListCellRenderer(使用jre5)   java试图为我的播放器类测试块实现播放器重力(RealtutsGml平台教程)   c#消耗一个。带有java的net web服务未显示预期结果   java在KOI8\R中检索html   基于java图形的搜索与基于随机的搜索   java如何检查安卓设备上的可用空间?在SD卡上?