为了账号安全,请及时绑定邮箱和手机立即绑定

如何实现一个帐号不能多个用户同时登录?

如何实现一个帐号不能多个用户同时登录?

龙哥35924675910 2016-11-03 07:59:16
如何实现一个帐号不能多个用户同时登录?
查看完整描述

3 回答

?
voipman

TA贡献2条经验 获得超3个赞

使用SSO单点登录;

登录后使用服务端的session保存登录的session;

  1. 登录时检查session是否存在,如果存在,表示已经有人登录,做登录拒绝;

  2. 如果登录时,session不存在,保存session;

  3. 退出时,删除session;

  4. 将session的ID信息保存到cookie中,登录时,携带上来。

查看完整回答
2 反对 回复 2016-11-03
  • 咔嚓886
    咔嚓886
    不正常退出怎么办呢?比如直接关闭浏览器
?
weenhall

TA贡献121条经验 获得超57个赞

百度一下sso单点登录,也可以在登录的时候判断session中是否包含当前用户,如果存在则提示已经登录

查看完整回答
反对 回复 2016-11-03
?
慕粉4153633

TA贡献2条经验 获得超0个赞

用数据库链接池实现呀!

配置文件:

1、创建数据库Student,表student
2、配置server.xml文件。Tomcat安装目录下conf中server.xml文件。
<GlobalNamingResources>
   <Resource
      name="jdbc/DBPool"
      type="javax.sql.DataSource"
       password=""
       driverClassName="com.mysql.jdbc.Driver"
       maxIdle="2"
       maxWait="5000"
       username="root"
       url="jdbc:mysql://localhost:3306/student"
       maxActive="3"
   />
</GlobalNamingResources>
name:指定连接池的名称
type:指定连接池的类,他负责连接池的事务处理
url:指定要连接的数据库
driverClassName:指定连接数据库使用的驱动程序
username:数据库用户名
password:数据库密码
maxWait:指定最大建立连接等待时间,如果超过此时间将接到异常
maxIdle:指定连接池中连接的最大空闲数
maxActive:指定连接池最大连接数
3、配置web.xml文件。
<web-app>
 <resource-ref>
    <description>mysql数据库连接池配置</description>
    <res-ref-name>jdbc/DBPool</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
 </resource-ref>
</web-app>
4、配置context.xml文件
与server.xml文件所在的位置相同。
<Context>
   <ResourceLink
      name="jdbc/DBPool"
      type="javax.sql.DataSource"
      global="jdbc/DBPool"
   />
</Context>
5、测试
DataSource pool = null;
Context env = null;
Connection conn = null;
Statement st = null;
ResultSet rs  = null;
try{
   env = (Context)new InitialContext().lookup("java:comp/env");
   //检索指定的对象,返回此上下文的一个新实例
   pool = (DataSource)env.lookup("jdbc/DBPool");
   //获得数据库连接池
   if(pool==null){out.printl("找不到指定的连接池!");}
   con = pool.getConnection();
   st = con.createStatement();
   rs = st.executeQuery("select * from student");
}catch(Exception ex){out.printl(ne.toString());}

查看完整回答
反对 回复 2016-11-03
  • 3 回答
  • 1 关注
  • 4961 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信