【问题标题】:Simultaneous authorization of the administrator in the admin panel and on the site(Django)在管理面板和站点(Django)中同时授权管理员
【发布时间】:2021-03-26 13:37:00
【问题描述】:

通过管理面板登录时,管理员同时登录网站和管理面板,请问我该如何解决这个问题? 问题是当我代表管理员进入管理面板时,授权发生在我正在开发的站点上,我不需要它。我希望在站点(用户)和管理面板(管理员)上分别执行授权。(DJANGO)。请帮我解决这个问题???

【问题讨论】:

  • 是否足以阻止管理员查看该站点,同时仍然一次只有一个用户登录?或者您是否需要能够让管理员和用户同时登录?
  • 管理员和用户同时登录会很酷

标签: python django authentication authorization


【解决方案1】:

我不相信有一种简单的方法可以做你想做的事。一个用户一次登录的想法是 Django 工作方式的基础。

如果这只是为了使开发和测试更容易(不必经常切换用户),这可以通过使用多个浏览器来实现。例如,您可以同时使用 Firefox 中的管理员帐户和 Chrome 中的标准用户帐户登录。

如果您仍然需要为一个浏览器执行此操作,我能想到的最明显的方法是实现两个独立的网站 - 一个用于您的管理页面,一个用于您的网站。这是您可以为您的管理页面实现单独站点的一种方法:

  1. 创建文件 myproject/admin_settings.py
from myproject.settings import *

# make sure any cookies will be named differently
CSRF_COOKIE_NAME = 'myproject_admin_csrftoken'
SESSION_COOKIE_NAME = 'myproject_admin_sessionid'

# point to a different urls.py file
ROOT_URLCONF = 'myproject.admin_urls'
  1. 创建文件 myproject/admin_urls.py
from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]
  1. 从您的其他 urls.py 文件中删除对管理部分的所有引用。

现在您应该可以只运行管理站点了:

python manage.py runserver --settings=myproject.admin_settings

如果您想使用 Django 开发服务器运行这两个站点,请打开两个终端并确保在两个不同的端口上运行

1 号航站楼:

python manage.py runserver 127.0.0.1:8000

2号航站楼:

python manage.py runserver 127.0.0.1:8001 --settings=myproject.admin_settings

【讨论】:

  • 能不能重写Django授权,难不难?
  • 我目前正在以隐身模式打开管理面板。但很快我想将项目上传到主机。我认为这就是问题开始的时候
  • 是的,我认为重写 Django 授权来做你想做的事情会很困难。为管理员设置一个带有单独 cookie 的单独网站将更轻松地完成同样的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-10
  • 2015-06-13
  • 1970-01-01
  • 2014-07-28
  • 2012-07-12
  • 2013-09-22
  • 2015-11-19
相关资源
最近更新 更多