Как я могу гарантировать, что только авторизованные пользователи могут получить доступ к этому представлению на основе класса?

У меня есть представление ввода риска, доступ к которому имеют только менеджеры проекта, но не другие группы пользователей. Как мне убедиться, что только эта группа пользователей имеет доступ к этому представлению?

Представление страницы риска на основе классов

@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'
Вернуться на верх