在用QQ的过程中我们如果你的账号在另外一台手机上面登录,这是腾讯后台会提醒你异地登录,可能你的账号被盗了,然后你手机上得QQ就会被退出登录,这个时候你就需要重新登录修改密码,以确保账号的安全。那这种被挤下线的行为其实很普遍,我接触过的每个项目几乎都用到过,就是用session来实现,应为每个设备的session不一样,服务端就根据你上传来的session来判断是不是同一台设备登录。
首先,登录的时候,我们会将用户的信息,还有session存起来,直接看代码(php实现):
public function setUserToSessin($user){
$user_key = "user_"+$user['id'];
$session_key = $this->getCacheSessionKey('user');
$old_session_key = $this->getCacheSessionKey('user',Cache:get($user_key,null));
if($old_session_key && strcmp($old_session_key,$session_key) !== 0){
Cache:forget($old_session_key);
Cache::put($user_key,Session::getId(),2147483647);
Cache::put($session_key,$user,2147483647);
private function getCacheSessionKey($key,$session_id=null){
$session_id = $session_id ? $session_id : Session:getId();
$session_key = sprintf('%s_session_%s',$key,$session_id);
return $session_key;
public function getUserFromSession(){
$session_key = $this->getCacheSessionKey('user');
$user = Cache::get($session_key,null);
if(!$user){
return new UserNotLoginException;
return $user;
在用QQ的过程中我们如果你的账号在另外一台手机上面登录,这是腾讯后台会提醒你异地登录,可能你的账号被盗了,然后你手机上得QQ就会被退出登录,这个时候你就需要重新登录修改密码,以确保账号的安全。那这种被挤下线的行为其实很普遍,我接触过的每个项目几乎都用到过,就是用session来实现,应为每个设备的session不一样,服务端就根据你上传来的session来判断是不是同一台设备登录。首先,登录的时候...
Servlet判断
用户
是否登陆过和
异地
登录
功能
利用ServletContext+
session
+监听器(Listener)实现
做login界面时当
用户
进行
登录
会有
用户
再次
登录
的
情况
,如果一个
账户
两个人同时
登录
会有许多不必要的麻烦,针对以上
情况
做出了一下代码的修改
首先是两个简单的界面
login.html
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
相信很多小伙伴都使用QQ聊天工具,那是否遇到过这样的场景呢?当在一台电脑上已经
登录
QQ,此时因为某些原因需要在另一台电脑再
登录
相同号码的QQ,
登录
成功后会发现之前电脑上的QQ
下线
了。这就是QQ限制了同一个号码在电脑上不能重复
登录
,我们的Web程序也可以进行重复
登录
的限制,那么本次任务就是用过滤器和监听器来解决重复
登录
问题。具体任务如下:
1、未
登录
时不能访问主界面。
2、
登录
后,
登录
信息存储到
session
中。
3、监听器监听
session
属性值变化。
4、一个浏览器中已经
登录
,如果在另
Hello, 我是Shendi, 这次我给大家带来了
Java
Web
登录
限制
登录
防踢
挤
下线
的功能实现
如题,很简单,我们需要编写一个Filter,就叫LoginFilter 实现
java
x包下的Filter接口,并且 实现方法
public class LoginFilter implements Filter {
public void doFilter(ServletRequ...
3. 系统验证账号和密码的正确性。
4. 如果账号和密码正确,则系统允许
用户
登录
,并为
用户
分配一个唯一的
Session
ID。
5.
Session
ID 存储在服务器上,同时将该
Session
ID 保存在
用户
设备的Cookie中。
6. 客户端通过
Session
ID来与服务器进行通信,以获取必要的数据。
7. 如果
用户
尝试在另一个设备上使用相同的账号
登录
,系统将检查该账号是否已在其他设备上
登录
。
8. 如果该账号已在其他设备上
登录
,则系统将要求
用户
下线
另一个设备上的账号,以确保唯一
Session
ID。
9. 如果
用户
未响应,系统将自动将其
下线
。
10. 如果该账号未
登录
任何其他设备,则系统将允许
用户
在当前设备上
登录
,并分配一个新的唯一
Session
ID。
希望这个流程图对您有所帮助!