我在自己写一个练习的小网站,在用户登录上有点问题

文天阳 2015-07-11 02:42:08
网站没有用任何框架,直接用javaEE写的。
用户登录的时候,
//存在,把USER放到session中转向主页
HttpSession session = request.getSession();
session.setAttribute("username", username);
request.getRequestDispatcher("/index.jsp").forward(request, response);

用户注销的时候:
//从session中删除user
HttpSession session =request.getSession();
session.removeAttribute("username");
//转向主页
request.getRequestDispatcher("/index.jsp").forward(request, response);

还有用户登录之前判断当前登录用户是否登录:
//判断当前用户是否登录
String loginuser = (String) request.getSession().getAttribute("username");
if (loginuser != null && loginuser.equals(username)) {
//当前登录用户已经存在,不能重复登录
request.setAttribute("message", "当前用户已经登录,不能重复登录");
request.getRequestDispatcher("/message.jsp").forward(request, response);
return;
}

先在的问题是,下一个用户再登录,session.setAttribute("username", username); 这句话会不会把上一个用户给覆盖掉。以及,用户在通过session判断是否已经登录的那段代码,只有在同一机器的同一浏览器生效,也就是我在IE上登录A账号,然后在火狐上登录A账号,没有在session中判断出来是否已经登录。
...全文
307 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
securitit 2015-07-13
  • 打赏
  • 举报
回复
当服务器端生成Session之后,只要客户端不主动发出清除Session的操作,在每次请求中都会有Session的相关信息的,就是SessionJID,所以在服务器端获取Session时,得到的Session实例也是根据这个SessionJID获取的,如果没有破坏原本的Session管理机制,不需要自己去管理这部分Session的,在Servlet容器接收到请求之后,回根据请求头的内容自动生成或获取相应的Session实例,直接使用就可以了。 如果自己管理Session才需要记录相应的Session。
梦想总会成真 2015-07-12
  • 打赏
  • 举报
回复
可以用application,key用户名,value记sessionid
rick-he 2015-07-11
  • 打赏
  • 举报
回复
引用 2 楼 himrdiao 的回复:
[quote=引用 1 楼 ab637800 的回复:] 1,session.setAttribute("username", username);不会 除非你用同一个浏览器打开选项卡那种的在一次登录其他账号会覆盖, 2,不同的浏览器sessionID都不同,你当然判断不到。
那我该怎么办呢?求帮助解答。[/quote] 1:每个用户登录都会得到一个session这个不会有问题的 2:要判断重复登陆可以看看http://bbs.csdn.net/topics/320250367
文天阳 2015-07-11
  • 打赏
  • 举报
回复
引用 1 楼 ab637800 的回复:
1,session.setAttribute("username", username);不会 除非你用同一个浏览器打开选项卡那种的在一次登录其他账号会覆盖, 2,不同的浏览器sessionID都不同,你当然判断不到。
那我该怎么办呢?求帮助解答。
ab637800 2015-07-11
  • 打赏
  • 举报
回复
1,session.setAttribute("username", username);不会 除非你用同一个浏览器打开选项卡那种的在一次登录其他账号会覆盖, 2,不同的浏览器sessionID都不同,你当然判断不到。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧