人活久了什么鸟都能见到,代码敲久了什么问题都能见到。问题产生后总有些惰性,懒得去改。到头来却是非不为也,实不知也。知道了其实也就是一行代码的事儿。
前段时间做了一个登陆功能,本来以为是手到擒来的小活,没怎么放到心上,但真正用起来细节问题处理的实在粗糙。
功能很简单,就是常见的登陆,但是不使用session,改用redis缓存记录登陆标识。
遇到的问题,不再这细说了,大多是项目中特殊情况引起的。在此单表一例。登陆后跳转到登陆前的页面。
第一版代码如下:12345678 private void jumpLoginPage(HttpServletRequest request,HttpServletResponse response) throws IOException{ String redirectUrl = request.getRequestURL().toString(); String queryString = request.getQueryString(); if(null!=queryString){ redirectUrl = URLEncoder.encode(redirectUrl+"?"+queryString, "UTF-8"); } response.sendRedirect(loginUrl+"?redirectUrl="+redirectUrl);}
五分钟写完,提交svn,然后愉快的去大群水了。
第二天,就有人开始发现问题了:
> 登陆成功,停留在一个页面,当登陆标识失效后,点击页面的按钮发送**post**请求,请求被拦截后跳转到登陆页面,输入账号,密码,点击登陆,登陆成功跳转到之前页面(此处应为跳转的之前的请求,即点击按钮发送的请求),然后。。。。悲剧了,由于改请求只支持post方式,所以400错误。
修改,第二版代码
|
|
然后,愉快的去水了。。。