【问题标题】:With Glimpse How To Turn It Off Without Disabling?一瞥如何在不禁用的情况下将其关闭?
【发布时间】:2014-06-13 15:52:28
【问题描述】:

我喜欢 Glimpse,但只有当我对它要告诉我的内容感兴趣时。我有一个 glimpse 角色,我可以打开和关闭它以使 glimpse 消失(参见下面的代码),但我真正想要的是能够在我的 global.asax 中启用它时打开和关闭它。我试过去 site.com/glimpse.axd 并设置“关闭一瞥”,但在下一页刷新时它又回来了。

我错过了什么?

public class GlimpseSecurityPolicy : IRuntimePolicy
{
    public RuntimePolicy Execute(IRuntimePolicyContext policyContext)
    {
        var httpContext = policyContext.GetHttpContext();
        if (!httpContext.User.IsInRole("GlimpseUser"))
        {
            return RuntimePolicy.Off;
        }
        return RuntimePolicy.On;
    }

    public RuntimeEvent ExecuteOn
    {
        get { return RuntimeEvent.EndRequest; }
    }
}

在我的 Web.Config 中:

<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
<runtimePolicies>
  <ignoredTypes>
    <add type="Glimpse.AspNet.Policy.LocalPolicy, Glimpse.AspNet" />
    <add type="Glimpse.Core.Policy.ControlCookiePolicy, Glimpse.Core" />
  </ignoredTypes>
</runtimePolicies>

【问题讨论】:

  • 您能否为“在我的 global.asax 中启用”和“下一页刷新它又回来了”的意思添加更多上下文。因为即使没有您的自定义安全策略(看起来不错),在按下“关闭 Glimpse”按钮后,也不应收集任何数据,也不应显示 Glimpse 面板。几个月前我写了一封blog post,解释了这些运行时策略是如何在运行时应用的,也许这可能会对你有所帮助。
  • 我正在展示我的 global.asax,这样评论就没有必要了。问题是在运行此代码并且用户处于 GlimpseUser 角色时,我似乎无法让 Glimpse 消失。当我浏览到 glimpse.axd 页面时,单击按钮关闭 glimpse,然后刷新页面,glimpse 仍然显示在底部,就好像我没有关闭它一样。
  • 关于 global.asax,我不太关注那里,因为我在这里看到的唯一内容是 GlimpseSecurityPolicy。您是否有任何机会在 CookieControlPolicy 的 web.config 中有一个 ignoreType 条目,这会导致忽略 Turn Glimpse Off 操作?您是否启用了 Glimpse 日志记录并注意到日志中有一些奇怪的东西?
  • 我用我的 web.config re Glimpse 中的内容更新了我的帖子。我的 global.asax 中的其他代码公共类 GlimpseSecurityPolicy” 但 VS 或 resharper 都说它从未使用过(但我并不总是相信)。显然,我是配置方面的初学者,我应该花更多的钱时间阅读和研究它是如何配置的。抱歉很迟钝

标签: asp.net glimpse


【解决方案1】:

好的,点击“Turn Glimpse Off”按钮无效的原因是因为ControlCookiePolicy在配置中被禁用,因此点击该按钮将无效。

因此,您需要从配置中删除该条目以使其再次起作用:

<add type="Glimpse.Core.Policy.ControlCookiePolicy, Glimpse.Core" />

当你这么说时

其他代码公共类GlimpseSecurityPolicy”在我的global.asax中

你的意思是GlimpseSecurityPolicy基本上定义为Mvc Application类的内部类?

无论您是否要在配置中启用 Glimpse 日志记录

<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
    <logging level="Trace" />
    <runtimePolicies>
    <ignoredTypes>
        <add type="Glimpse.AspNet.Policy.LocalPolicy, Glimpse.AspNet" />
    </ignoredTypes>
  </runtimePolicies>
</glimpse>

然后您应该会看到一个glimpse.log 文件出现在您的 Web 应用程序的根目录中,一旦应用程序启动,您应该会看到如下条目:

2014-06-13 09:48:25.8498 |调试 |发现“某些命名空间+GlimpseSecurityPolicy”类型的 IRuntimePolicy 并将其添加到集合中。 |

如果是这种情况,则实际上已发现该策略。 您可以在Execute 方法中放置一个断点,以检查是否实际进行了调用以及结果是什么。

【讨论】:

  • 谢谢,删除忽略 cookie 策略解决了它,就像你说的那样。我现在更喜欢一瞥 1000%,因为我可以打开和关闭它,而无需启用和禁用角色。继续努力!
  • 我很高兴它现在正在工作。请记住,从安全的角度来看,检查角色成员身份的自定义运行时策略是比依赖基本上每个人都可以设置的简单 cookie 的方法(以防您在本地开发机器之外使用它)
猜你喜欢
  • 2014-06-04
  • 2019-02-12
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多