查看elmah日志而不创建角色/用户身份验证

时间:2012-02-22 23:19:17

标签: asp.net-mvc elmah

我开始使用ELMAH,我觉得它很棒。我在线阅读了一些文档,但现在我的应用程序没有角色/用户授权设置。

我希望能够通过访问/elmah.axd来阅读生产中的错误日志,但我不想只向所有人开放,elmah是否有任何可以让我创建密码的功能(在web.config中)并通过querystring传递它?模仿“安全”RSS源。或类似的事情....

1 个答案:

答案 0 :(得分:10)

  

但是现在我的应用没有角色/用户授权设置

实际上,配置表单身份验证并不难:

<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处理程序以读取您的公共站点的日志。