2012-02-22 49 views
2

我開始使用ELMAH,我認爲它很棒。我在網上閱讀了一些文檔,但現在我的應用沒有角色/用戶授權設置。查看elmah日誌而不創建角色/用戶身份驗證

我希望能夠通過訪問/elmah.axd來讀取生產中的錯誤日誌,但我不想只是向所有人開放,elmah是否有任何功能可以讓我創建密碼(在web.config中)並通過querystring傳遞它?模仿一個「安全的」RSS源。什麼ofcourse類似....

回答

9

但現在我的應用程序沒有角色/用戶授權設置

其實這並不難,以配置表單身份驗證:

<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> 

最後y當匿名用戶試圖訪問/elmah.axd,他將在那裏他需要身份驗證才能登錄屏幕呈現

@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> 
} 

現在:OU可以有一個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視圖訪問它。用戶名/密碼組合在web.config。在本例中我使用了passwordFormat="Clear",但您也可以使用SHA1或MD5密碼。


當然,如果你不想配置驗證你也可以配置ELMAH存儲在XML文件或SQL數據庫的日誌信息,然後完全從你的公開網站面臨關閉elmah.axd處理程序。然後創建另一個ASP.NET站點,只有您可以使用指向相同日誌源的相同elmah配置訪問該站點,並且只需導航到您的私有站點的/elmah.axd處理程序即可閱讀您的公共站點的日誌。