Как обеспечить только доступ для ELMAH.axd для входа администратора в сеть - PullRequest
7 голосов
/ 10 августа 2011

Я создал приложение и внедрил протоколирование ELMAH.На моем сайте есть три типа пользователей.

Администратор : может все (права на просмотр elamh.axd) Пользователь : может иметь собственные права (не может просматривать elamh.axd) Гость : только просмотр (невозможно просмотреть elamh.axd)

Указанный выше пользователь будет сохранен в базе данных.

Пробелм: - Теперь, как я могу управлять уровнем защиты для пользователя и гостя для просмотра файла журнала ELMAH.axd?

1 Ответ

10 голосов
/ 10 августа 2011

Если вы используете Роли , вы можете добавить это в свой web.config:

<location path="~/elmah.axd">
    <system.web>
        <authorization>
            <allow roles="Admin" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

Если вы не используете роли, вам нужно будет указать каждого пользователя, которому вы хотите предоставить доступ:

<location path="~/elmah.axd">
    <system.web>
        <authorization>
            <allow users="user1, user2, user3" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

Обновление:

Поскольку вы не используете встроенную аутентификацию / авторизацию и не можете контролировать страницу elmah, вам придется обрабатывать событие BeginRequest():

protected void Application_BeginRequest()
{
    if(Request.Url.AbsolutePath.ToLowerInvariant().Contains("elmah.axd"))
    {
        // Check if user can see elmah and handle unauthorised users (return 401/redirect to login page/etc...)
    }
}
...