跳转到主要内容

从Django管理界面以任何用户身份登录,完成后切换回来

项目描述

从Django管理界面以任何用户身份登录,完成后切换回来

Adam Charnock 编写,以及一些优秀的 贡献者

https://img.shields.io/pypi/v/django-su.svg https://img.shields.io/pypi/dm/django-su.svg https://img.shields.io/github/license/adamcharnock/django-su.svg https://img.shields.io/travis/adamcharnock/django-su.svg https://coveralls.io/repos/adamcharnock/django-su/badge.svg?branch=develop

安装

  1. 可以从 GitHub 中检出 django_su,或者使用 pip 安装。

    pip install django-su
  2. django_su 添加到您的 INSTALLED_APPS。确保您将其放置在 django.contrib.admin 之前。

    INSTALLED_APPS = (
        ...
        'django_su',  # must be before ``django.contrib.admin``
        'django.contrib.admin',
    )
  3. SuBackend 添加到 AUTHENTICATION_BACKENDS

    AUTHENTICATION_BACKENDS = (
        ...
        'django_su.backends.SuBackend',
    )
  4. 更新您的 urls.py 文件。

    urlpatterns = [
        url(r'^su/', include('django_su.urls')),
        ...
    ]

那就完成了!

请参阅示例应用程序。此应用程序用于手动测试此包的功能。这也是一个很好的例子。

django-su 已在 Django 2.2 或更高版本上进行测试,较低版本可能可以工作,但被视为不受支持。

配置(可选)

您可以在您的 settings.py 中设置各种可选配置选项。

# URL to redirect after the login.
# Default: "/"
SU_LOGIN_REDIRECT_URL = "/"

# URL to redirect after the logout.
# Default: "/"
SU_LOGOUT_REDIRECT_URL = "/"

# A function specifying the permissions a user requires in order
# to use the django-su functionality.
# Default: None
SU_LOGIN_CALLBACK = "example.utils.su_login_callback"

# A function to override the django.contrib.auth.login(request, user)
# view, thereby allowing one to set session data, etc.
# Default: None
SU_CUSTOM_LOGIN_ACTION = "example.utils.custom_login"

用法

转到管理界面查看用户,并寻找右上角的新“登录为”按钮。

一旦您以 su 身份登录用户,您可以通过在浏览器中导航到 /su/ 来返回到您的原始用户。

如何

如何通知超级用户已连接到另一个用户

此选项在以最初登录用户身份工作时警告超级用户。要激活此选项,请执行以下操作

  1. django_su.context_processors.is_su 添加到 TEMPLATE_CONTEXT_PROCESSORS

    TEMPLATE_CONTEXT_PROCESSORS = (
        ...
        'django_su.context_processors.is_su',
    )
  2. 在您的 base.html 中包含 su/is_su.html 片段。

    {% include "su/is_su.html" %}

如何使用自定义用户模型(AUTH_USER_MODEL)与 django-su 一起使用

django-su 应该可以正常与自定义用户模型一起使用。但是,您的 admin.py 文件中的 ModelAdmin 需要如下调整

# Within your admin.py file
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin

from . import models

 @admin.register(models.CustomUser)
 class CustomUserAdmin(UserAdmin):
     # The following two lines are needed:
     change_form_template = "admin/auth/user/change_form.html"
     change_list_template = "admin/auth/user/change_list.html"

这确保 Django 管理员将使用为您的自定义用户模型正确的模板自定义。

致谢

此应用程序由 Adam Charnock 组装,但主要基于以下想法、代码和评论:

django-su 使用 seed 打包。

项目详情


下载文件

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

源代码分发

django-su-1.0.0.tar.gz (23.7 kB 查看散列值)

上传时间 源代码

由以下支持