在django用户管理页面中添加“以用户身份登录”按钮的应用程序。

django-loginas的Python项目详细描述


Django登录

关于

Django管理员的“以用户身份登录”。

Build StatusPyPI version

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',...]
  • loginasurl添加到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许可证分发的。

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

推荐PyPI第三方库


热门话题
java如何使用数据库中的值填充p:selectOneMenu   Java/Junit中的异步单元测试一个非常简单但不成功的例子   在Debian上使用Java连接到MySQL   java测试时如何恢复表中的一条记录/行?   java如何将重点放在jbutton上而不是放在另一个jbutton上?   java我可以从HPROF文件中获取JVM标志吗?   java如何使用自定义比较器在2个集合上保留   java让stringTokenizer将一行文本拆分为预定义变量的最佳方法是什么   Kotlin Android/Java字符串日期时间格式,API21   exchange server EWS Java Api自动发现不工作   netbeans是Java新手,似乎无法修复错误;应为类、接口或枚举。274062   我正在尝试将一些scala代码转换为Java8,以创建新的Lambda和并行集合   流中的分配api(java)   用于串行通信的java Python字节数组