为了满足客户的一个奇怪的需求,产生了这样的一次奇怪的开发过程
客户的出发点
- 客户因为内部人员流动性比较大,一个是内部岗位调换,一个是人员流失;
- 造成系统使用过程中经常有流程中的数据,因人员变动而无法继续跟进;
- 新员工接手的时候,对离职的老员工沉淀在系统里的历史数据无法查看;
- 一定程度上避免内部员工之间因知道对方登录信息,而顶替对方登录系统的可能
- 对于云端部署的系统,可以在公网上访问,用U盾登录能增加系统的访问安全性
基于对上面的理解和认同,我们提出引入U盾之后可能带来的若干问题
- 超级管理员的u盾丢失等会造成整个系统的用户功能无法使用,所以必须有备份
- 在知道密码的情况下也不能随意登录员工账号了,即使数据需要修改或者调整
- 为了解决上一个问题,可能需要为同一个账号制作两个u盾;
- 人员出差或不在厂的时候,没有u盾无法委托他人处理紧急的事情,比如审批等
- 系统的用户名和角色是不是需要全部重新调整
不调整的话,新人登录系统之后,在整个系统内都显示的是旧员工的名字
调整的话,用岗位名称代替用户名,如果一个岗位上有多个人的话,区分不开是那个人;因为只能用岗位1,岗位2来代称 - 管理u盾的成本很高,新u盾启用的时候,需要往u盾里写入用户名和密码;u盾丢失的时候,需要重新弄一次,而且必须修改密码,否则如果丢失的u盾找到后,也能登录系统,会造成一定的管理漏洞
针对问题商讨得出的解决办法
- 有一个公用u盾,供多次写入使用;比如临时需要登录某一账号,那么用超级用户将该账户的信息写入u盾
- 对u盾的管理之识别其用户名/密码,而不捆绑识别u盾的serial number
- 张三和李四交接的时候,李四继承使用张三的u盾,然后委托管理员为其修改用户名和密码,然后将u盾重新改写一下
系统登录界面的调整
-
输入用户名/密码登录
-
用u盾登录
提示插入U盾,已插入那么系统自动显示用户名
同时用户必须再次输入密码,用户输入的密码要和u盾的密码信息做比对;
密码正确时进入系统主界面;否则提示密码错误
用户信息写入u盾
通过两种方法实现修改密码并同时写入u盾
方法1:由管理员为其他用户重置密码
- 首先用管理员u盾登录系统
-
选定用户管理模块中的某用户
点击最后的“写入u盾”按钮。(这里只展示了修改密码的界面,也支持修改用户名但在其他页面中实现;如果需要修改用户名的话,先修改完用户名再在此重置密码)
-
必须重置密码
然后点击“写入”按钮,这样实现了管理员为系统中的任何用户制作登录u盾的功能
方法2:用户个人重置密码
-
个人登陆后
不允许普通用户修改自己的用户名,只允许其修改自己的密码并写入u盾
其他
- 关键代码实现示例
s_simnew1.Socket_UK.onclose = function(){ //ajax请求放到close的回调函数里可行 submitNow($dialog, $grid, $pjq); }
- 选择u盾,最好选择开发代码比较完整的,这样的话几乎不需要技术支持就可以自己完成,可以节省不少时间
欢迎留言讨论:)
网友评论