我需要编写一个脚本来生成一年未登录 Tridion 的用户报告。我知道我们可以检索所有文件的修改日期和用户,但是我们如何跟踪没有进行任何修改的用户的登录日期,即只有只读访问权限?
5 回答
查看 Tridion 2011 应用程序的 IIS 日志。在那里,您应该看到不同用户对 Tridion 中所有页面的请求。一些条目将如下所示:
2012-09-20 00:48:53 ::1 GET /WebUI/Editors/CME/Views/TridionDashboard/TridionDashboard.aspx - 81 TRIDION\Administrator ::1 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.1+(KHTML,+like+Gecko)+Chrome/21.0.1180.89+Safari/537.1 200 0 0 48
从上面的项目你可以看到 TridionDashboard 页面,即你登录后得到的第一页,是由 TRIDION\Administrator 用户访问的(是的,我的 Tridion VM 被称为“TRIDION”,我使用管理员帐户登录它)。
因此,您需要做的是确保日志在填满后不会被覆盖并存档到您可以抓取并解析它们的位置。
您需要的唯一信息是用户名。只需将其放入某种 HashSet 数据结构(仅存储唯一键)中,键是用户名,值是时间戳。我敢打赌,您可以使用 Powershell 用几行代码完成所有解析(或者,如果您使用 Cygwin,使用 grep 命令也可以解决问题)。
日志通常位于 %SystemDrive%\inetpub\logs\LogFiles 中,但请检查您的系统以确保该位置未被修改。
我从来没有写过这样的东西,我能想到的唯一方法是创建一个 GUI 扩展,它在用户打开 CME 时向用户对象添加指示登录时间的 AppData。
我不相信登录发生时会触发事件,否则我建议创建一个偶数系统。
您可能会考虑阅读 Nuno 的这篇文章 (http://www.tridiondeveloper.com/inheriting-metadata-on-organizational-items),它描述了执行由用户打开项目触发的操作。我的猜测是,即使用户只有只读访问权限,它也会被触发(但您需要检查这一点)。如果在所有读取操作上触发它,您可以在用户打开 CME 中的任何 IdentifiableObject 时更新用户 AppData。这将告诉您用户上次查看 CME 中任何项目的时间。
希望有帮助
克里斯
Mihai 前段时间写过这个,这里是链接,它也有一些代码示例:http: //yatb.mitza.net/2012/03/capturing-users-last-login-date-into.html
您可以实现 Load 事件。这几乎被 GUI 中的每个操作调用。只要有人使用 Tridion,就肯定会调用该事件。但要小心:你必须编写超级高效的代码,否则会减慢系统速度。