跳转到主要内容

管理员可以以不同用户身份登录。

项目描述

冒名顶替者

pypi codecov Downloads Hit counter Python versions PyPI - Django Version Python package Upload Python Package Codacy Badge

冒名顶替者是一个Django应用程序,允许管理员成员使用自己的用户名和密码以不同用户身份登录。

登录

Login

登录为

Logged as

冒名顶替者日志

Impostor log

每次这样的认证都会记录在数据库中,并在具有ImpostorLog界面访问权限的每个人的管理界面中列出。但是,无法通过管理界面删除日志条目,以使掩盖行踪变得更加困难。

冒名顶替者已在Django 1.11及更高版本中进行了测试。它也可能与其他版本兼容。它还依赖于Django的认证系统,并假定您使用其用户名进行认证。

Impostor 是由 Marko Samastur (markos@gaivo.net) 开发并由 Andreu Vallbona (avallbona@gmail.com) 维护的 MMM 项目。
该软件遵循 MIT 许可协议。

安装

如果你没有使用 Django 的 auth 系统,Impostor 将无法工作。它当前使用设置 AUTH_USER_MODEL (默认: django.contrib.auth.models.User) USERNAME_FIELD (默认: username) 或用户名作为认证参数,以及密码和用户对象 _default_manager get_by_natural_key 函数从 USERNAME_FIELD 返回用户对象。

首先像安装任何其他 Django 应用一样安装 impostor 应用文件。

pip install impostor

接下来需要对您的 Django 设置文件进行一些修改。

impostor.backend.AuthBackend 添加到 AUTHENTICATION_BACKENDS:这将添加 impostor 认证后端到其他后端。AUTHENTICATION_BACKENDS 是一个后端列表的元组,如果您还没有它,请将以下行添加到您的设置中

AUTHENTICATION_BACKENDS = (
    'impostor.backend.AuthBackend',
    'django.contrib.auth.backends.ModelBackend',
)

还将 impostor 应用添加到 INSTALLED_APPS。

INSTALLED_APPS = [
    '...', 
    'impostor',
]

为了能够在 django 管理界面中看到“以其他用户登录的用户”,请确保在 INSTALLED_APPS 中在 'django.contrib.admin' 之前包含 'impostor' 应用。

运行

python manage.py migrate

以创建所需的表,您就可以设置了。

用法

到现在为止,您应该有一个正常工作的系统。这意味着您的超级用户用户(将 is_superuser 标志设置为 True 的用户)可以通过使用他们的密码和以下连接来登录不同的用户

staff_username as users_username

示例:假设我的用户名是 markos,我想登录为用户 fry。那么我会使用 'markos as fry' 作为我的用户名,以及我的正常密码作为密码。

每次这样的登录都会记录在 ImpostorLog 表中,可以通过 Django 管理界面查看,但出于明显的安全原因,不能在那里进行操作。

您可以通过将设置 IMPOSTOR_GROUP 添加到 settings.py 中来扩展可以模仿其他用户的用户集。属于具有此名称的组的用户也可以假装是别人(但不能是超级用户)。

Impostor 还提供了一种替换认证表单,因为两个用户名很容易超过原始表单的 30 个字符限制。它的名称是 BigAuthenticationForm,您可以在 impostor.forms 中找到它。

注意:只有超级用户用户可以使用此(您必须为需要此权限的每个用户打开 is_superuser)或属于 IMPOSTOR_GROUP 的用户,并且每次这样的登录都会被记录。

还要谨慎使用 IMPOSTOR_GROUP,因为它仍然允许模仿具有不同权限集的人(因此存在安全漏洞)。

贡献

非常欢迎贡献。可以使用 tox 运行测试,请在提交拉取请求之前确保覆盖率至少保持不变。

本地开发

通过 pyenv 安装您需要的所有 Python 解释器。例如。

pyenv install 3.9.2
pyenv install 3.8.8
pyenv install 3.7.7
pyenv install 3.6.13
pyenv install 3.5.3

然后通过以下方式将其设置为全局

pyenv global 3.9.2 3.8.8 3.7.7 3.6.13 3.5.3 

运行测试

tox

问题

如果您遇到任何问题,请提交问题,并提供详细描述。

待办事项/愿望清单

  • 记录 impostor 注销的时间
  • 标记“被劫持”请求(这样 impostor 可以知道它在作为其他人使用网站时,并避免做些愚蠢的事情或限制在这种情况下可以做的事情)
  • 为方便通知被劫持的用户提供框架(这样您可以在需要时通知他们他们的账户已被访问)
  • 添加一些测试以提高覆盖率

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

Impostor-3.1.0.tar.gz (15.1 kB 查看哈希值)

上传时间 源代码

构建分发

Impostor-3.1.0-py3-none-any.whl (13.6 kB 查看哈希值)

上传时间 Python 3

由以下支持