Как я могу гарантировать, что только авторизованные пользователи могут получить доступ к этому представлению на основе класса?
У меня есть представление ввода риска, доступ к которому имеют только менеджеры проекта, но не другие группы пользователей. Как мне убедиться, что только эта группа пользователей имеет доступ к этому представлению?
Представление страницы риска на основе классов
@method_decorator(decorators, name='dispatch')
class Risk_entry_page(View):
template_name = 'risk/riskEntry.html'
def get(self, request, *args, **kwargds):
return render(request, self.template_name)
Рискованные урлы
urlpatterns = [
path('', views.Solution_area_home_page.as_view(), name='risks-home-page'),
path('risk/', views.Risk_entry_page.as_view(), name='risk-entry-page'),
path('assumption/', views.Assumption_entry_page.as_view(), name='assumption-entry-page'),
path('issue/', views.Issue_entry_page.as_view(), name='issue-entry-page'),
path('dependency/', views.Dependency_entry_page.as_view(), name='dependency-entry-page'),
path('logout/', views.Logout.as_view(), name='logout-view'),
]
Если вы хотите предоставить доступ только Authorized пользователю, то вы можете ввести Permission в вашем проекте, так что пользователь с определенным разрешением сможет получить доступ к вашему Risk_entry_page классу https://django-permission.readthedocs.io/en/latest/
Если вы хотите, чтобы только login пользователь мог получить доступ, вы Risk_entry_page класс тогда используйте Login Required mixin.
from django.contrib.auth.mixins import LoginRequiredMixin
@method_decorator(decorators, name='dispatch')
class Risk_entry_page(LoginRequiredMixin, View):
template_name = 'risk/riskEntry.html'
def get(self, request, *args, **kwargds):
return render(request, self.template_name)
You can limit views to a class-based view to authenticated users with the LoginRequiredMixin
mixin [Django-doc]. You probably however want to limit the view to users with a given (set of) permission(s) with the PermissionRequiredMixin
mixin [Django-doc]:
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.views.generic import TemplateView
class MyView(PermissionRequiredMixin, TemplateView):
permission_required = 'some_app.some_permssion'
template_name = 'risk/riskEntry.html'