ReportViewerForMvc ограничивает доступ к ReportViewerWebForm.aspx - PullRequest
0 голосов
/ 29 июня 2018

Я использую ReportViewerForMvc, и он устанавливает ReportViewerWebForm.aspx в корневую папку проекта. Как ограничить доступ к ReportViewerWebForm.aspx? Я пытался

<location path="ReportViewerWebForm.aspx">
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>

Однако это приводит к тому, что .aspx отказывает в доступе даже зарегистрированным пользователям.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Решено путем добавления выделенного кода и создания подкласса ReportViewerForMvc.ReportViewerWebForm, проверки пользователя в событии Page_Load с использованием cookie-файла сеанса.

0 голосов
/ 02 июля 2018

Вы можете попробовать добавить элемент allow для всех прошедших проверку / авторизованных пользователей после элемента deny:

<location path="ReportViewerWebForm.aspx">
    <system.web>
        <authorization>
            <deny users="?" />
            <allow users="*" />
        </authorization>
    </system.web>
</location>

Или попробуйте этот пример:

<configuration>
    <system.web>
        <!-- authentication element -->

        <authorization>
            <deny users="?" />
        </authorization>
    </system.web>

    <location path="ReportViewerWebForm.aspx">
        <system.web>
            <authorization>
                <allow users="*" />
            </authorization>
        </system.web>
    </location>
</configuration>

"?" принадлежит неаутентифицированным / анонимным пользователям (не вошли в систему), а "*" принадлежит всем остальным. Первое согласованное правило авторизации всегда обрабатывается первым, сверху вниз.

Если вы хотите ограничить доступ к странице средства просмотра отчетов, разрешив открывать ее только определенным ролям, используйте схему авторизации, как в примере ниже (укажите все разрешенные роли, разделенные запятой):

<location path="ReportViewerWebForm.aspx">
    <system.web>
        <authorization>
            <allow roles="rolename_1,rolename_2,..." />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

Примечание: Перед использованием правил авторизации убедитесь, что у вас уже есть элемент authentication:

<authentication mode="Forms">
   <forms loginUrl="~/Account/Login" ... />
</authentication>

Ссылки:

разрешить элемент для авторизации (схема настроек ASP.NET)

Запретить элемент для авторизации (схема настроек ASP.NET)

Настройка правил авторизации для определенной страницы или папки в web.config

Похожие проблемы:

Авторизация для запрета доступа к страницам в папке не работает

Запретить анонимным пользователям проблему

...