Buf*_*fke 22 django django-admin django-authentication
我创建了自己的登录视图.但是,如果用户直接访问/ admin,则会将其带到管理员登录页面,并且不会使用我的自定义视图.如何将其重定向到用于/ admin的所有内容的登录视图?
Isa*_*aac 51
来自http://djangosnippets.org/snippets/2127/-使用管理员登录页面login_required.例如,在urls.py:
from django.contrib.auth.decorators import login_required
from django.contrib import admin
admin.autodiscover()
admin.site.login = login_required(admin.site.login)
Run Code Online (Sandbox Code Playgroud)
你可能已经有两条线,甚至可能是第一条线; 添加第四行将导致任何可能使用相应参数admin.site.login重定向到您LOGIN_URL的next函数.
小智 8
我发现上面的答案不正确地尊重"下一个"查询参数.
解决此问题的简单方法是使用简单的重定向.在您网站的网址文件中,在包含管理网址之前,请输入如下所示的行:
url(r'^admin/login$', RedirectView.as_view(pattern_name='my_login_page', permanent=True, query_string=True))
Run Code Online (Sandbox Code Playgroud)
While @Isaac's solution should reject majority of malicious bots, it doesn't provide protection for professional penetrating. As a logged in user gets the following message when trying to login to admin:
We should instead use the admin decorator to reject all non-privileged users:
from django.contrib.admin.views.decorators import staff_member_required
from django.contrib import admin
[ ... ]
admin.site.login = staff_member_required(admin.site.login, login_url=settings.LOGIN_URL)
Run Code Online (Sandbox Code Playgroud)
To the best of my knowledge, the decorator was added in 1.9.
Holá
我找到了一个非常简单的解决方案。
只需告诉 django 管理员登录的 url 由您自己的登录视图处理
您只需要修改项目的 urls.py 文件(注意,不是应用程序)
from your_app_name import viewsurl(r'^admin/', include(admin.site.urls))url(r'^admin/login/', views.your_login_view),这是一个例子
from django.conf.urls import include, url
from django.contrib import admin
from your_app import views
urlpatterns = [
url(r'^your_app_start/', include('your_app.urls',namespace="your_app_name")),
url(r'^admin/login/', views.your_app_login),
url(r'^admin/', include(admin.site.urls)),
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16100 次 |
| 最近记录: |