如果非超级用户尝试访问Django管理页面,则将其重定向到登录页面/配置文件页面 [英] Redirect non super users to landing page/profile page if they try to access Django admin page

查看:68
本文介绍了如果非超级用户尝试访问Django管理页面,则将其重定向到登录页面/配置文件页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在构建一个基于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 ,可以完成您尝试做的事情:

从django.contrib.admin.views.decorators中的

 导入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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆