同时间同帐号只能登陆一次


第一种方法:


Java代码 
package redSess;  
  
import javax.servlet.ServletContext;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpSession;  
  
import org.apache.struts.action.ActionMapping;  
  
public class sessionCheck   
{  
   
 private static sessionCheck sessioncheck;  
 public sessionCheck(HttpServlet servlet)   
 {  
 }  
 public static sessionCheck getInstance(HttpServlet servlet)   
 {  
  if (sessioncheck==null)  
  {  
   sessioncheck=new sessionCheck(servlet);  
  }  
  return sessioncheck;  
 }   
 public void setSession(String userName,HttpServlet servlet,HttpSession session,ActionMapping mapping)   
 {  
        final ServletContext sc = servlet.getServletContext();//取得容器,容器中根据用户唯一标识userID存放session   
        if (sc.getAttribute(userName) != null)   
        {  
         // 第二次登陆后第一次无效  
            ((HttpSession) sc.getAttribute(userName)).invalidate();// 清除第一次登陆的session  
            System.out.println(session);  
        }  
        sc.setAttribute(userName, session);//放入当前最新session  
        mapping.findForward("sessionDestroy") ;  
    }  
  
}  




MemberLogin: 


Java代码 
sessionCheck.getInstance(this.getServlet()).setSession(userName, servlet, session, mapping);  






jsp: 

JSP代码 
<body ="sessionDestroy()">  
<language="java" type="text/java">  
sessionDestroy()  
{  
  alert("连接超时,或帐号已在别处登陆,请查证后重新登陆");  
  location.href = "UserLogin.jsp" ;  
}  
</>   


这样在两台电脑上后登陆的人用户就会把先登陆的给踢掉,但是暂时还没实现在同一台电脑上后登陆的用户把先登陆的踢掉的功能 


上面是在后台实现的,如果要在JSP中做,直接appliction.getAttribute(userId),appliction.setAttribute(userId,   session)就行


第二种:

 同步Session控制
如果你希望限制单个用户只能登录到你的程序一次,Spring Security通过添加下面简单的部分支持这个功能。 首先,你需要把下面的监听器添加到你的web.xml文件里,让Spring Security获得session生存周期事件: 


  

        
<listener>
  <listener-class>org.springframework.security.ui.session.HttpSessionEventPublisher</listener-class>
</listener>




然后,在你的application context加入如下部分: 

  <http>
    ...
    <concurrent-session-control max-sessions="1" />
  </http>


        
这将防止一个用户重复登录好几次-第二次登录会让第一次登录失效。 通常我们更想防止第二次登录,这时候我们可以使用 


  <http>
    ...
    <concurrent-session-control max-sessions="1" exception-if-maximum-exceeded="true"/>
  </http>
        


第二次登录将被阻止。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值