ReportViewerForMvc ограничивает доступ к ReportViewerWebForm.aspx

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

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

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

2 ответа

Решение

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

Вы можете попробовать добавить 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)

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

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

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

Разрешение на запрет доступа к страницам в папке не работает

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

Другие вопросы по тегам