我开始使用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处理程序以读取您的公共站点的日志.
| 归档时间: |
|
| 查看次数: |
2204 次 |
| 最近记录: |