如果非超级用户尝试访问Django管理页面,则将其重定向到登录页面/配置文件页面 [英] Redirect non super users to landing page/profile page if they try to access Django admin page
问题描述
我正在构建一个基于Django的网站,如果他们不是超级用户,则尝试将用户重定向到个人资料/登录页面时遇到问题.只有已登录的超级用户才有权访问管理页面.
现在我正在使用localhost.
已登录方案:非超级用户仍然可以访问
尝试访问
尝试访问
尝试访问
我的urls.py如下:
来自进口*admin.autodiscover()admin.site.admin_view = admin_viewadmin.site.login = login_required(admin.site.login)admin.site.login = staff_member_required(admin.site.login,login_url = settings.LOGIN_URL)urlpatterns = [path('',views.index,name ='index'),path('dummy',views.loggedin,name ='dummy'),url(r'^ admin/login/',views.loggedin,name ='dummy'),url(r'^ admin/',admin.site.urls),] +静态(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT)urlpatterns + = staticfiles_urlpatterns()
我在做什么错了?
好像您的urlpatterns中有一些额外的路由-也许这是问题所在?
这是我正在工作的 urls.py
,可以完成您尝试做的事情:
导入staff_member_required从django.urls导入路径,包括从django.contrib导入管理员admin.site.login = staff_member_required(admin.site.login,login_url ='index')urlpatterns = [路径("admin/",admin.site.urls),...]
I am building a Django based website and I am facing an issue when trying to redirect users to profile/landing page if they are not super users. Only super user who is logged in should have access to admin page.
Right now I am working on localhost.
Logged In scenario: Non super users are still able to access http://127.0.0.1/admin and http://127.0.0.1/admin/login
Not Logged In scenario: Not logged in users are still able to access http://127.0.0.1/admin/login
Logged in but Non super user view when trying to access http://127.0.0.1/admin:
Logged in but Non super user view when trying to access http://127.0.0.1/admin/login:
Not logged in users when trying to access http://127.0.0.1/admin:
Not logged in users when trying to access http://127.0.0.1/admin/login:
My urls.py looks like:
from imports *
admin.autodiscover()
admin.site.admin_view = admin_view
admin.site.login = login_required(admin.site.login)
admin.site.login = staff_member_required(admin.site.login, login_url=settings.LOGIN_URL)
urlpatterns = [
path('', views.index, name ='index'),
path('dummy', views.loggedin, name ='dummy'),
url(r'^admin/login/', views.loggedin, name ='dummy'),
url(r'^admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()
What am I doing wrong here?
Looks like you have some extra routes in your urlpatterns - maybe these are the issue?
Here is my working urls.py
that accomplishes what you are trying to do:
from django.contrib.admin.views.decorators import staff_member_required
from django.urls import path, include
from django.contrib import admin
admin.site.login = staff_member_required(admin.site.login, login_url='index')
urlpatterns = [
path('admin/', admin.site.urls),
...
]
这篇关于如果非超级用户尝试访问Django管理页面,则将其重定向到登录页面/配置文件页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!