2

asp.net mvc の scott hanselman の例は、ローカル環境のミニ プロファイラーを表示する方法を示しています。

protected void Application_BeginRequest()
        {
            if (Request.IsLocal) { MiniProfiler.Start(); } //or any number of other checks, up to you 
        }

しかし、私はさらに一歩進んで、特定のログイン ユーザーまたは ips に対してのみリモートで表示できるようにしたいと考えています。

方法はありますか?

更新:次のコードを使用しました:

protected void Application_EndRequest()
        {
            MiniProfiler.Stop(); //stop as early as you can, even earlier with MvcMiniProfiler.MiniProfiler.Stop(discardResults: true);
        }

        protected void Application_PostAuthorizeRequest(object sender, EventArgs e)
        {
            if (!IsAuthorizedUserForMiniProfiler(this.Context))
            {
                MiniProfiler.Stop(discardResults: true);
            }
        }

        private bool IsAuthorizedUserForMiniProfiler(HttpContext context)
        {
            if (context.User.Identity.Name.Equals("levalencia"))
                return true;
            else
                return context.User.IsInRole("Admin");
        }
4

1 に答える 1

8

PostAuthorizeRequest現在のユーザーが特定のロールに属していない場合、またはリクエストが特定の IP または必要なチェックから来ている場合は、イベントをサブスクライブして結果を破棄できます。

protected void Application_BeginRequest()
{
    MiniProfiler.Start();  
}

protected void Application_PostAuthorizeRequest(object sender, EventArgs e)
{
    if (!DoTheCheckHere(this.Context))
    {
        MiniProfiler.Stop(discardResults: true);
    }
}

private bool DoTheCheckHere(HttpContext context)
{
    // do your checks here
    return context.User.IsInRole("Admin");
}
于 2013-04-09T08:27:37.707 に答える