如何在Web中为管理员登录提供仅ELMAH.axd的Access

时间:2011-08-10 02:58:32

标签: asp.net-mvc-3 elmah

我创建了应用程序并实现了ELMAH日志记录。在我的网站中有三种类型的用户。  

  • 管理员:可以一切(查看elamh.axd的权利)
  • 用户:可拥有自己的权利(无法查看elamh.axd)
  • 访客:仅查看(无法查看elamh.axd)
  • 以上用户将存储在数据库中。

    万阿英,蒋达清: - 现在我如何管理User和Guest的保护级别以查看ELMAH.axd日志文件?

    1 个答案:

    答案 0 :(得分:10)

    如果您使用Roles,可以将其添加到您的web.config:

    <location path="~/elmah.axd">
        <system.web>
            <authorization>
                <allow roles="Admin" />
                <deny users="*" />
            </authorization>
        </system.web>
    </location>
    

    如果您没有使用角色,则必须指定要授予其访问权限的每个用户:

    <location path="~/elmah.axd">
        <system.web>
            <authorization>
                <allow users="user1, user2, user3" />
                <deny users="*" />
            </authorization>
        </system.web>
    </location>
    

    <强>更新

    由于您没有使用任何内置身份验证/授权,并且您无法控制elmah页面,因此您将不得不处理BeginRequest()事件:

    protected void Application_BeginRequest()
    {
        if(Request.Url.AbsolutePath.ToLowerInvariant().Contains("elmah.axd"))
        {
            // Check if user can see elmah and handle unauthorised users (return 401/redirect to login page/etc...)
        }
    }