在django用户管理页面中添加“以用户身份登录”按钮的应用程序。
django-loginas的Python项目详细描述
Django登录
关于
Django管理员的“以用户身份登录”。
loginas
仅支持python 3,从0.4版起。如果你在2号,用
0.3.6。
安装django loginas
将
loginas
添加到python路径,或使用pip安装:pip install django-loginas
将
loginas
应用程序添加到INSTALLED_APPS
:# settings.pyINSTALLED_APPS=[...'loginas',...]
将
loginas
url添加到urls.py
:# urls.pyurlpatterns+=path("admin/",include('loginas.urls')),
如果您使用的是自定义用户模型,则需要将模板添加到其中,以便显示按钮:
# admin.pyclassYourUserAdmin(ModelAdmin):change_form_template='loginas/change_form.html'
现在,你该走了。只要访问django管理员,导航到一个用户,您就会看到“日志 在屏幕右上角的“作为用户”按钮。
配置
此时,只有那些具有is_superuser
权限的用户才能作为其他用户登录。
如果您使用自定义用户模型,但尚未指定该权限,或者您希望更改哪些用户是
授权以其他身份登录,您可以定义CAN_LOGIN_AS
设置,如下所示:
# settings.py# This will only allow admins to log in as other users:CAN_LOGIN_AS=lambdarequest,target_user:request.user.is_superuser# This will only allow admins to log in as other users, as long as# those users are not admins themselves:CAN_LOGIN_AS=lambdarequest,target_user:request.user.is_superuserandnottarget_user.is_superuser# You can also define a string path to a module:CAN_LOGIN_AS="utils.helpers.custom_loginas"
默认情况下,单击“以用户身份登录”将用户发送到settings.LOGIN_REDIRECT_URL
。
您可以这样覆盖此行为:
# settings.pyLOGINAS_REDIRECT_URL='/loginas-redirect-url'
为了在注销时自动还原原始用户,请替换默认的注销 使用一个特殊的注销,从已签名的会话还原原始登录会话。
# settings.pyfromdjango.core.urlresolversimportreverse_lazyLOGOUT_URL=reverse_lazy('loginas-logout')
此外,您可以指定注销的重定向url(默认值为settings.LOGIN_REDIRECT_URL
)。
# settings.pyfromdjango.core.urlresolversimportreverse_lazyLOGINAS_LOGOUT_REDIRECT_URL=reverse_lazy('admin:index')
默认情况下,单击“以用户身份登录”不会更新user.last_login
。
您可以这样覆盖此行为:
# settings.pyLOGINAS_UPDATE_LAST_LOGIN=True
默认情况下,登录开关消息将使用User
模型的
USERNAME_FIELD
。您可以通过传入不同的
字段名:
# settings.pyLOGINAS_USERNAME_FIELD='email'
其他实施建议
现有注销视图?
如果您已经有一个注销视图,您可以修改为在完成“以”身份登录会话后再次登录原始用户。下面是一个示例:
classLogoutView(LogoutView):template_name='myapp/logged_out.html'@method_decorator(never_cache)defdispatch(self,request,*args,**kwargs):fromloginas.utilsimportrestore_original_loginrestore_original_login(request)returnredirect('myapp:login')
模板意识
您可以添加上下文处理器loginas.context_processors.impersonated_session_status
在settings.py文件中,如果您希望能够访问变量is_impersonated_session
在所有模板上下文中:
# settings.pyTEMPLATES=[{...'OPTIONS':{'context_processors':['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth',...'loginas.context_processors.impersonated_session_status',],},},]
请注意,django log in as不允许您作为其他超级用户登录,以防止 从工作人员用户到超级用户的权限提升。如果您想以 超级用户,首先将其降级为非超级用户,然后登录。
许可证
此软件是根据BSD许可证分发的。