Просмотр журналов elmah без создания роли / аутентификации пользователя - PullRequest
2 голосов
/ 23 февраля 2012

Я начал использовать ELMAH, и я думаю, что это здорово. Я читаю некоторую документацию онлайн, но сейчас у моего приложения нет настроек ролей / авторизации пользователей.

Я хотел бы иметь возможность читать журналы ошибок на рабочем месте, зайдя в /elmah.axd, но я не хочу просто открывать его всем, есть ли у elmah какие-либо функции, которые позволили бы мне создать пароль ( в web.config) и передать его через строку запроса? Подражая "безопасному" каналу RSS. Или что-то похожее конечно ...

1 Ответ

10 голосов
/ 23 февраля 2012

но сейчас мое приложение не имеет настройки ролей / авторизации пользователей

На самом деле настроить аутентификацию форм не так уж сложно:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880">
    <credentials passwordFormat="Clear">
      <user name="admin" password="secret" />
    </credentials>
  </forms>
</authentication>

, а затемЗащищайте elmah.axd:

<location path="elmah.axd">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
</location>

и, наконец, вы можете иметь AccountController:

public class AccountController : Controller
{
    public ActionResult LogOn()
    {
        return View();
    }

    [HttpPost]
    public ActionResult LogOn(string username, string password)
    {
        if (FormsAuthentication.Authenticate(username, password))
        {
            FormsAuthentication.SetAuthCookie(username, false);
            return Redirect("~/elmah.axd");
        }
        else
        {
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
        }
        return View();
    }
}

и LogOn.cshtml представление:

@Html.ValidationSummary(false)

@using (Html.BeginForm()) 
{
    <div>
        @Html.Label("username")
        @Html.TextBox("username")
    </div>
    <div>
        @Html.Label("password")
        @Html.Password("password")
    </div>
    <p>
        <input type="submit" value="Log On" />
    </p>
}

Сейчаскогда анонимный пользователь пытается получить доступ к /elmah.axd, ему будет представлен экран входа в систему, где он должен пройти аутентификацию, чтобы получить к нему доступ.Комбинация имени пользователя и пароля находится в web.config.Я использовал passwordFormat="Clear" в этом примере, но вы также можете использовать SHA1 или MD5 пароль.


Конечно, если вы не хотите настраивать аутентификацию, вы также можете настроить elmah для хранения информации регистрации вXML-файл или базу данных SQL, а затем полностью отключите обработчик elmah.axd на общедоступном веб-сайте.Затем создайте другой сайт ASP.NET, к которому только у вас будет доступ с той же конфигурацией elmah, указывающей на тот же источник журнала, и просто перейдите к обработчику /elmah.axd вашего частного сайта, чтобы прочитать журналы вашего общедоступного сайта.

...