在SDL Tridion 2011中检索用户登录时间

时间:2012-09-19 22:21:23

标签: tridion

我需要编写一个脚本,生成一个未登录Tridion 1年的用户报告。我知道我们可以检索修改日期和所有文件的用户,但是我们如何跟踪不进行任何修改的用户的登录日期,即只进行只读访问?

4 个答案:

答案 0 :(得分:8)

查看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数据结构(仅存储唯一键),使得key为username,value为时间戳。我打赌你可以使用Powershell使用几行代码进行所有解析(或者如果你使用Cygwin,使用grep命令的单行代码也可以做到这一点。)

日志通常位于%SystemDrive%\ inetpub \ logs \ LogFiles中,但请检查您的系统以确保该位置尚未修改。

答案 1 :(得分:3)

我从未写过这样的东西,我想到实现这一点的唯一方法是创建一个GUI扩展,它会在打开CME时向用户对象添加指示登录时间的AppData。

我不相信登录时会触发事件,否则我建议创建一个偶数系统。

您可以考虑阅读Nuno的这篇文章(http://www.tridiondeveloper.com/inheriting-metadata-on-organizational-items),它描述了执行由用户打开项目触发的操作。我的猜测是,即使用户只具有只读访问权限,它也会被触发(但你需要检查一下)。如果在所有读取操作上触发,则只要用户在CME中打开任何IdentifiableObject,就可以更新用户AppData。这将告诉您用户上次查看CME中的任何项目。

希望有所帮助

克里斯

答案 2 :(得分:3)

Mihai在此前发表过关于此的博文,这里是链接,它也有一些代码示例:http://yatb.mitza.net/2012/03/capturing-users-last-login-date-into.html

答案 3 :(得分:-1)

Tridion没有跟踪“此用户最后修改”,因此您必须自己滚动。

我想到的第一件事是写IdentifiableObject {{1}}。在该处理程序中,您可以更新用户的handler for the Save event属性。然后,该脚本可以简单地遍历所有用户,获取您的AppData并确定哪些用户已处于非活动状态超过一年。