如何在 Glimpse MVC 中将客户端名称显示为用户

How to Show Client Name as User in Glimpse MVC

我正在使用 Glimpse 来跟踪网络请求。我在测试服务器的 Web.config 中进行了以下设置。

Web.Config

    <runtimePolicies>
        <ignoredTypes>
            <add type="Glimpse.AspNet.Policy.LocalPolicy, Glimpse.AspNet" />
            <add type="Glimpse.Core.Policy.ControlCookiePolicy, Glimpse.Core"/>
        </ignoredTypes>
    </runtimePolicies>

so I able to run Glimpse on All client machine without making On/off from Glimpse.axd

我的问题是目前它正在将浏览器名称显示为客户端名称,如何将用户名称显示为客户端名称,如客户端中的 User1、User2。

我可以如下设置 Client Name setting Cookie glimpseId。

$("#UserName").change(function () {

     var userName = $('#UserName').val();

      document.cookie='glimpseId='+ userName +';path=/
      ;expires=Sat, 01 Jan 2050 12:00:00 GMT;';

 });

我从下面得到帮助link。

What does "Set Glimpse Session Name" do?

现在,使用管理员用户名登录后,我的更新输出如下。

Glimpse.axd 不仅允许您 enable/disable 一瞥(在您的设置中不再需要),而且还允许您设置客户端名称。 This SO Question 为您提供有关如何以及为什么的更多详细信息。

如果您没有自己明确设置,那么 Glimpse 有时会为您完成此操作。基本上,如果 Glimpse 找不到名为 glimpseId 的 cookie 作为请求的一部分,并且允许将 cookie 设置为响应的一部分(由 IRuntimePolicy 实现决定),然后它将使用 已登录用户的名称 作为值创建该 cookie,或者,当不存在此类用户时,它将根据随请求发送的浏览器详细信息创建一个名称,这就是你所看到的。

有趣的是,这正是您想要的,但会话仍根据所使用的浏览器命名。这样做的原因是 Glimpse 在您的情况下是开箱即用的,因为 ControlCookiePolicy 已被禁用,并且您对应用程序发出的第一个请求,比如说登录,已经创建该 cookie,因为它找不到 glimpseId cookie,它的值将基于随请求发送的浏览器详细信息,而不是基于登录用户,因为有 none还没有。

因此,如果您使用浏览器的开发人员工具删除该 cookie,并以登录用户身份发出新请求,那么您将看到您的名字作为会话名称(仅当心后续请求,因为处理该请求会将 cookie 设置为响应的一部分)

您也可以将该 cookie 显式写入您的登录过程,以确保它被显式设置为用户名,即使该 cookie 作为请求的一部分已经存在。

一个缺点,cookie 没有链接到任何用户会话,这意味着如果用户注销或会话过期,那么 Glimpse cookie 仍然存在并且每个后续请求都将被标记为登录用户做到了,可能不再是这样了。