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

The*_*Guy 2 asp.net-mvc elmah

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

我希望能够通过访问/elmah.axd来阅读生产中的错误日志,但我不想只向所有人开放,elmah是否有任何允许我创建密码的功能(在网络中).配置)并通过查询字符串传递它?模仿"安全"RSS源.或类似的事情....

Dar*_*rov 10

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

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

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880">
    <credentials passwordFormat="Clear">
      <user name="admin" password="secret" />
    </credentials>
  </forms>
</authentication>
Run Code Online (Sandbox Code Playgroud)

然后保护elmah.axd:

<location path="elmah.axd">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

最后你可以得到一个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();
    }
}
Run Code Online (Sandbox Code Playgroud)

和一个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>
}
Run Code Online (Sandbox Code Playgroud)

现在,当匿名用户尝试访问时,/elmah.axd他将看到登录屏幕,他需要进行身份验证才能访问它.用户名/密码组合在web.config.我passwordFormat="Clear"在这个例子中使用过,但你也可以使用SHA1或MD5密码.


当然,如果您不想配置身份验证,您还可以配置elmah将日志记录信息存储在XML文件或SQL数据库中,然后从面向公众的网站中完全禁用elmah.axd处理程序.然后创建另一个ASP.NET站点,只有您可以使用指向同一日志源的相同elmah配置访问,并只需导航到您的专用站点的/elmah.axd处理程序以读取您的公共站点的日志.