当我查看SAS日志时,有4个不同的变量可以抓取用户:
_METAPERSON
_METAUSER
_SECUREUSERNAME
_USERNAME
当我检查日志时,所有4个变量在执行过程时都具有相同的值。所以我建立了一个为特定用户检查_Metauser的过程,这样只有我想要的用户才能做点什么。 但是我的一位同事遇到的问题是变量不是他调用进程时为他存储的用户名,而是username @ Context。在其他3个变量中,只为他存储了用户名,所以也许我可以改为其中一个。我不能使用Metauser,因为对于某些人来说,用户名之后可能会有@Context。
不,我有问题,使用哪个变量? 4个变量有什么区别?使用哪种,以确保我只(并且始终)获得纯用户名,无论用户在哪里以及哪个程序/版本调用该进程?
答案 0 :(得分:4)
当应用程序服务器执行存储过程时,会创建 _SECUREUSERNAME 宏变量。 _SECUREUSERNAME的值包含客户端标识,如果_USERNAME尚未包含值,则此值将写入_USERNAME宏变量。 在大多数情况下,_SECUREUSERNAME的值将与_USERNAME
相同_USERNAME 指定从Web客户端身份验证获取的用户名的值。
_METAPERSON 指定与_METAUSER登录变量关联的Person元数据名称。此变量的值可以是UNKNOWN。客户端无法修改此变量。
_METAUSER 指定用于连接元数据服务器的登录用户名。客户端无法修改此变量。
您的问题没有简单的答案,因为这取决于您的设置。您的用户是否必须使用Metaserver登录?您的代码是否始终使用WebService访问?用户ID,它们是什么,是来自AD的ID?是否启用了单点登录(SSO)?如何在SAS上配置ID?人们使用可信用户进行连接吗?
此致 瓦西里
答案 1 :(得分:1)
我正在使用_METAUSER。现在,我们的系统使用SSO进行设置,因此用户名始终没有" @"。我也没有使用SSO,但后来我不得不使用%scan(& _METAUSER,1,@)来删除@context部分。
答案 2 :(得分:1)
在Stored Process会话中测试,使用SSO的9.2(windows)环境:
操作系统用户名(在我的情况下,我的Windows ID)
SAS用户名(在元数据中)