【发布时间】:2019-05-30 00:22:51
【问题描述】:
我将编写一个包含以下字段示例的模型。 user_id、role_id、company_id、functionality_id、has_access。我想编写中间件,用户将是raised NOT ACCESS,其中字段has_access 是false。请帮助我该怎么做,由于我的依赖关系,我无法使用内置权限。我创建了middleware.py 并关注了官方文档。这只是我编写中间件的开始
class ACLMiddleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
response = self.get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
我找到了一些对此代码的参考,但我不知道这样做是否正确,因为我使用的是 django 2.1 版本
from django.core.urlresolvers import reverse
from django.http import Http404
class RestrictStaffToAdminMiddleware(object):
"""
A middleware that restricts staff members access to administration panels.
"""
def process_request(self, request):
if request.path.startswith(reverse('admin:index')):
if request.user.is_authenticated():
if not request.user.is_staff:
raise Http404
else:
raise Http404
【问题讨论】:
标签: django django-models django-forms django-templates django-views