在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 Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]