我如何在只读容量中启用"在Glimpse?

时间:2015-05-01 17:34:08

标签: glimpse

我希望能够查看用户会话以进行调试。我正在尝试按照位于here的“历史记录”标签的设置说明进行操作。我不清楚我是如何以只读容量启用一瞥,而我的google-fu让我失望了。有人能指出我正确的方向吗?

来自文档:

  

接下来,您需要标记他们的"会话"已启用Glimpse   在只读容量(意味着Glimpse将收集信息   但他们无法看到它。通常,这是通过设置标志来完成的   他们(可能在用户表或其他类似的机制)和拥有   自定义运行时策略查找该标志。

1 个答案:

答案 0 :(得分:3)

首先让我开始解释以下含义

  
    

只读容量(意味着Glimpse会收集信息,但无法查看)

  

Glimpse有一堆IRuntimePolicy实现,开箱即用,还有更多,第三方或定制。

这些IRuntimePolicy实现确定了Glimpse在监视请求方面应该走多远,甚至根据某些自定义逻辑完全忽略其中的部分或全部。 Glimpse在运行时调用所有RuntimePolicy Execute(IRuntimePolicyContext policyContext)实现的IRuntimePolicy方法。

每个IRuntimePolicy将返回RuntimePolicy,表示Glimpse是否应继续监控请求,甚至完全停止监控。

如果查看RuntimePolicy值,那么您将看到它是一个标志枚举,其中每个值的限制性都比前一个值小(ExecuteResourceOnly值除外,这是一个特殊情况)。

在您的情况下,您希望监控,收集和保存有关您的应用程序用户发出的请求的数据,这样他们就不会在页面底部看到Glimpse客户端,也不需要< em> flag 自己。如果您查看RuntimePolicy而不是值PersistResults是您希望分配用户请求的上限值,同时请注意,Off值可能仍然是有效值一个或多个请求。

现在的问题是:如何在没有用户互动的情况下实现这一目标?

在正常情况下,您可以设置Glimpse Control cookie,它将满足开箱即用的Glimpse ControlCookiePolicy。如果您在生产环境中运行,那么您可能需要额外IRuntimePolicy,以确保只允许管理员或超级用户设置该cookie,否则任何人都可以设置该cookie(该控件cookie不用于授权)并获取一些敏感数据。

也就是说,现在需要一个额外的IRuntimePolicy来检查给定的请求是否有资格被监控,但同时表明数据应该只是持久存在而不是作为响应的一部分返回。然后,此检查应基于标识要监视的会话的内容,如上文文档摘录中所述。因此,如果您为用户分配一个DebugMySession角色,那么您可以拥有这样的政策:

public RuntimePolicy Execute(IRuntimePolicyContext policyContext)
{
    var httpContext = policyContext.GetHttpContext();
    if (httpContext.User.IsInRole("DebugMySession"))
    {
        return RuntimePolicy.PersistResults; 
    }

    return RuntimePolicy.On;
}

请注意,返回RuntimePolicy.On并不意味着它将会启用,这只表示一旦处理完所有IRuntimePolicy实施后,此政策与最终结果无关。此政策只希望确保如果已分配该角色,则最终结果的限制性绝不会低于PersistResults

应用上述内容也意味着您必须在配置中停用ControlCookiePolicy,否则ControlCookiePolicy将返回RuntimePolicy.Off,因为Cookie不会在那里。

这同样适用于您的管理员或超级用户检查。因此,更好的想法可能是将管理员/超级用户角色检查与上面的调试角色检查相结合,以便您有一个策略返回正确的RuntimePolicy值。