关于Java WEB登录那点事

关于Java WEB登录那点事

在一些实际项目的开发中,难免有些项目会使用到登陆这个功能,这个功能看似简单,实际上也涉及到了很多的东西。

 

开发过程当中,前台提交Form表单,后台从Form表单中取出用户的信息去进行验证。在本地的测试中,这样的流程是没有任何问题的。当我们把这样的项目一经发布上线,情况就发生了不同,因为我们的项目都不止是在一个服务器上运行,一个域名不止对应了一台服务器,而是多台。在这样的情况下,在进行登录,就会发现,明明输入正确的信息和验证码,服务器返回的信息却是输入的信息有误,登录不上去。

 

  说到这里,讲述一个概念“负载均衡”;负载均衡是什么?个人理解,负载均衡就是为了减轻服务器的压力,一个项目对应了多台服务器,根据客户端的请求,随机分配服务器对客户端进行响应。在这里,分享一个负载均衡服务器—》“Nginx“。

  根据这个理解,上面发生的问题似乎就有了答案了;打开登录的页面,访问的是某台服务器,服务器响应的验证码又是另一台服务器,在进行登录,登录对应的服务器发生改变,并不是生成验证码的那台服务器,所以造成用户登录次次失败。

总结原因,对应出了以下几个解决方案:

1.在表单的action的地址中加入:   ;JSESSIONID=session的ID值。

   在生成验证码的地址同理如上

   注: JSESSIONID在?之前,用;隔开

2.在生成验证码之后,写入Cookie。

   登录成功后,写入Cookie,这样就可以解决多台服务器共享信息。

分享一些注意细节:

Java WEB中,调用了response.getOuputStream();之后,向客户端输出一些信息之后,在调用response的addCookie()方法,就不能在进行写入Cookie操作,会出现读取不到Cookie的信息。

posted on 2015-05-13 21:25  演绎我的角色  阅读(592)  评论(0)    收藏  举报

导航