实践|获取操作系统用户名ActiveXObject(仅IE支持)


theme: channing-cyan

highlight: a11y-dark

实践|获取操作系统用户名ActiveXObject(仅IE支持)

一、前言

对于很多现在的前后端分离项目,工程化前端项目来说,兼容 Internet Explorer 浏览器,似乎成了伪需求。而仅在Internet Explorer 支持的 ActiveXObject,可以实现获取操作系统用户信息,从而实现免登录功能的方法,许多人可能听都没听过。

而在2012年以前, Internet Explorer 占据了大部分的市场份额,一家浏览器的市场份额超过其他所有浏览器的份额,在那时这个方法是十分有意义的。

在一些特殊企业,操作系统,工作电脑是加有特殊防护的,安装一个软件,一个浏览器是十分不容易的,要走十分复杂流程,并且由专职人员处理。人们被限制只能使用电脑自带的浏览器,而因为操作系统级别的防护和局域网的关系,被外部攻击的可能大大降低,于是产生了业务系统免登录,只要登录操作系统即可,而通过操作系统的登录名作为业务系统的用户身份凭证。事实上这里面有一套严密的设计,登录操作系统的只能是认证过的员工号,而这些员工号又被当做各种业务系统的账号。

在这样的背景下,我于2021年,没错就是 Internet Explorer 正式停止维护的前一年,遇到了一个老系统,里面就有这样一个需求和做法。使用 ActiveXObject 实现获取当前登录的操作系统用户信息,进而用此作为凭证静默登录业务系统。

tips1 很少有方法支持通过浏览器获取当前登录的操作系统用户信息,这被视为极度危险的操作。

tips2 据我所知仅 Internet Explorer 支持通过 ActiveXObject 获取当前登录的操作系统用户信息,了解这点对打算使用该方法的人来说很重要。

二、关键技术点提前知

1.通过 ActiveXObject 获取当前操作系统的登录用户的信息

js let WshNetwork = new ActiveXObject("WScript.Network"); // 获取当前用户登录域 const userDomain = WshNetwork.UserDomain; // 获取计算机名 const computerName = WshNetwork.ComputerName; // 获取登录当前操作系统的用户名 const computerName = WshNetwork.UserName;

2.注意事项

自动登录需要允许Activexobject脚本运行,所以可能需要提醒用户做以下操作(这通常是运维人员统一设置的)。

设置步骤:在"IE-Internet选项-安全-自定义级别-ActiveX控件和插件对未标记为可安全执行脚本的ActiveX插件",设置为“提示”或“启用”'。

三、示例 demo 代码

```html

测试ie上获取操作系统用户信息

系统用户名:{{ systemUsername }}

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值