我希望能够查看用户会话以进行调试。我正在尝试按照位于here的“历史记录”标签的设置说明进行操作。我不清楚我是如何以只读容量启用一瞥,而我的google-fu让我失望了。有人能指出我正确的方向吗?
来自文档:
接下来,您需要标记他们的"会话"已启用Glimpse 在只读容量(意味着Glimpse将收集信息 但他们无法看到它。通常,这是通过设置标志来完成的 他们(可能在用户表或其他类似的机制)和拥有 自定义运行时策略查找该标志。
答案 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
值。