需求
当web系统上线后,通常情况下我们使用管理员账号对系统进行维护。但是在维护过程中,有部分操作是管理员账号无法准确还原的情况下,我们需要登录到生产系统中的普通用户(一般是问题提出人)的账号上进行观察。
如果该用户修改过密码,就牵扯到沟通成本。
因此我们需要一个功能,能够在管理员账号上,一键式的切换到不同用户身份下进行系统操作。
实现思路
- 在用户登录过程中,我们将一个sessionInfo对象(自建的权限对象,里面包括了登录用户的用户名,部门,以及相关权限信息)添加到HttpSession这个对象中。
httpSession.setAttribute("sessionInfo", sessionInfo);
- 全局内使用的session信息,均是通过HttpSession对象获取的。
SessionInfo sessionInfo = (SessionInfo) httpSession.getAttribute("sessionInfo");
-
现在增加了一个功能,将一个用户账号(不含密码),通过管理员专用按钮触发后,传递给后台。后台将该用户账号下的相关信息,重新创建一个sessionInfo,添加到HttpSession中,覆盖原有的对象。
-
此时,如果刷新页面,用户的身份信息将会切换。