在ODATA的类方法中得到IE客户端信息

在ODATA操作读取数据时,可以在代码中可通过类/IWFND/CL_TRANSACTION_HANDLER得到前端客户的一些信息,比如客户的浏览器,IP,操作系统 ,完整URL参数,COOKIE,XSRF_TOKEN等信息。

以下代码是我在做define root custom CDS时,写在其中的读取类ZCL_CONSIGN_SALE_QUERY中的,此CDS的开发可参看使用RAP创建创建一个简单功能例子

1.读取客户端信息

可读取IE,IP等客户信息,但COOKE在这里不会显示 ,后面可用其它方法读取

其中LT_TIHTTPNVP中就有前端用户操作的各种数据,比如其中NAME= ‘referer’时的值 ,就是用户操作时的完整URL信息,这样可以把一些用户参数放到URL中,在ODATA读取时得到。

还能得到前端用户的一些其它信息,比如IP,浏览器,sap-passport等信息,

在ODATA的类方法中得到IE客户端信息 - 第1张  | 优通SAP
在ODATA的类方法中得到IE客户端信息 - 第2张  | 优通SAP

上面的类LOG,RUTIME,还也可以读取到一些WEB相关的信息,可以调试查看。

2.得到XSRF_TOKEN

可以使用以下类得到XSRF_TOKEN,正常SAP配置都是启用了些值的,这是SAP WEB操作的安全标识,只要在前端通过用户密码登陆时,都会生成一个唯一的值 ,并且直到退出前此值不会改变,这样就可以此值来作为用户此次登陆操作的唯一ID,但这个不是COOKIE

3.获取COOKIE

在前端IE打开SAP时,比如FIORI 打开时,输入用户密码登陆后,对所有的功能操作在IE端发送到SAP的URL中都会带着COOKE,此值直到退前,都不会改变,此值也是此次用户登陆的唯一标识。

此值是从类属性CL_HTTP_SERVER->m_security_session_cookie中读取,但此属性是一个私有属性,所以继承了此类来读取。另外传入的是CL_HTTP_SERVER_NET,此类也有些值 。

先创建继承子类ZCL_HTTP_SERVER_NET,我是在SE24中创建的,应该也可以在使用的地方创建。

      隐藏内容需要支付:¥5
任何问题请联系yan252@163.com
立即购买

在我的的代码中读取COOKIE.

以上的XSRF_TOKEN,COOKIE,都能代表此次用户登陆操作的唯一性,但如果用户在SICF中对运行设置了默认登陆用户密码的话,此两值 都是空的,读取不到值,另外在代码中    DATA(L_SESSID) = CL_HTTP_SERVER_NET=>IF_HTTP_SERVER~SESSION_ID.还能读到个一个SESSION的值 ,但发现此值每次刷新都会变,这个值没有唯一性,