在用ASP给客户做一个OA办公系统时,客户要求每个管理员帐号只能允许一个人登陆,当有其他人使用当前管理帐号登陆时,原来已经登陆的用户就被提示:非法登陆或帐号被盗用的信息。 想了几套方案,比如新建一个用户在线表,限制同一个帐号不能同时在线。 但一旦用户不按正常方法退出,在线列表将不能正确更新,同一用户想在二次登陆时就不允许了。 最后想到了一个最简单的解决办法,那就是采用随机码机制,在用户登陆时,把登陆时的随机码写入用户数据库字段truepass和写入session,然后进行后台每页操作时判断数据库中当前用户的随机码字段和写入session里的随机码是否匹配。如果不匹配,证明有另一个人使用了该同名用户进行登陆,并刷新了用户表的随机码,导致验证无法通过。 其他人使用同样的管理账号成功登陆时,将数据库中当前用户的随机码字段刷新,和写入session,而这时候前面已经登陆的用户就会被限制了,被系统提示:非法登陆或帐号被盗用的信息。 这个方法是不是很简单和实用呢:) 写session可以改为写cookies
|