如何在 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 仍然存在并且每个后续请求都将被标记为登录用户做到了,可能不再是这样了。
我正在使用 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 仍然存在并且每个后续请求都将被标记为登录用户做到了,可能不再是这样了。