从Django管理界面以任何用户身份登录,完成后切换回来
项目描述
从Django管理界面以任何用户身份登录,完成后切换回来
由 Adam Charnock 编写,以及一些优秀的 贡献者。
安装
可以从 GitHub 中检出 django_su,或者使用 pip 安装。
pip install django-su
将 django_su 添加到您的 INSTALLED_APPS。确保您将其放置在 django.contrib.admin 之前。
INSTALLED_APPS = ( ... 'django_su', # must be before ``django.contrib.admin`` 'django.contrib.admin', )
将 SuBackend 添加到 AUTHENTICATION_BACKENDS。
AUTHENTICATION_BACKENDS = ( ... 'django_su.backends.SuBackend', )
更新您的 urls.py 文件。
urlpatterns = [ url(r'^su/', include('django_su.urls')), ... ]
那就完成了!
请参阅示例应用程序。此应用程序用于手动测试此包的功能。这也是一个很好的例子。
django-su 已在 Django 2.2 或更高版本上进行测试,较低版本可能可以工作,但被视为不受支持。
外部依赖(可选,但推荐)
以下应用程序是可选的,但将增强用户体验
“登录 su” 表单将使用 django-form-admin 渲染。
用户选择小部件将使用 django-ajax-selects 渲染。
注意,django-ajax-selects 需要以下设置
AJAX_LOOKUP_CHANNELS = {'django_su': dict(model='auth.user', search_field='username')}
配置(可选)
您可以在您的 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/ 来返回到您的原始用户。
如何
如何通知超级用户已连接到另一个用户
此选项在以最初登录用户身份工作时警告超级用户。要激活此选项,请执行以下操作
将 django_su.context_processors.is_su 添加到 TEMPLATE_CONTEXT_PROCESSORS。
TEMPLATE_CONTEXT_PROCESSORS = ( ... 'django_su.context_processors.is_su', )
在您的 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 的散列值
算法 | 散列值 | |
---|---|---|
SHA256 | 1a3f98b2f757a3f47e33e90047c0a81cf965805fd7f91f67089292bdd461bd1a |
|
MD5 | 529c6b92109a496db66372449116b55f |
|
BLAKE2b-256 | d3cf5d5bdaff569468dba3053a7a623f64fcf5e36d5a936a5617a1c1972a7da4 |