web使用session安全登陆与退出
2017-11-10 16:06
447 查看
1. 在登陆的时候进行session操作,加入标志
切记的是一定要加入禁止浏览器缓存,否则即使退出后点击浏览器的回退按钮还是可以回到上个页面
3.为了提高用户体验,建议在登陆验证后面加上重定向,在重定向处判断用户是否登陆(session的值),没有的话重定向到登陆页面
登陆处加上重定向
if(result != -1) {
modelMap.addAttribute("job","hr");
httpSession = request.getSession();
httpSession.setAttribute("
4000
userID",result);
return "redirect:/home";
}重定向处加上判断session
@RequestMapping("/home")
public String home(HttpServletResponse response, HttpServletRequest request) {
response.setHeader("Cache-Control","no-cache"); //不对页面进行缓存,再次访问时将从服务器重新获取最新版本
response.setHeader("Cache-Control","no-store"); //任何情况下都不缓存页面
response.setDateHeader("Expires", 0); //使缓存过期
response.setHeader("Pragma","no-cache"); //HTTP 1.0 向后兼容
httpSession = request.getSession();
try{
userID = (int) httpSession.getAttribute("userID");
} catch (Exception e) {
logger.info("-----不存在HomeAction.httpSession.useID----");
return "index";
}
return "home";
}
切记的是一定要加入禁止浏览器缓存,否则即使退出后点击浏览器的回退按钮还是可以回到上个页面
@RequestMapping(value = "/hr",method = RequestMethod.POST) private String hrLogin(@RequestParam String email, @RequestParam String password, ModelMap modelMap, HttpServletRequest request , HttpServletResponse response) { response.setHeader("Cache-Control","no-cache"); //不对页面进行缓存,再次访问时将从服务器重新获取最新版本 response.setHeader("Cache-Control","no-store"); //任何情况下都不缓存页面 response.setDateHeader("Expires", 0); //使缓存过期 response.setHeader("Pragma","no-cache"); //HTTP 1.0 向后兼容 try { result = loginServiceImpl.findByUserEmailAndUserPasswordAndUserJob(email,password,"hr"); } catch (Exception e) { System.out.println("loginAction:"+e); } if(result != -1) { modelMap.addAttribute("job","hr"); httpSession = request.getSession(); //得到session httpSession.setAttribute("userID",result); //加入标志,此处result为用户的ID return "home"; } else { modelMap.addAttribute("errorTip",true); return "redirect:/login/selectLogin?btn=hr"; } }2.退出的时候清除session
@RequestMapping("/logout") public String logout(HttpServletRequest request) { httpSession = request.getSession(); httpSession.removeAttribute("userID"); httpSession.invalidate(); return "index"; }
3.为了提高用户体验,建议在登陆验证后面加上重定向,在重定向处判断用户是否登陆(session的值),没有的话重定向到登陆页面
登陆处加上重定向
if(result != -1) {
modelMap.addAttribute("job","hr");
httpSession = request.getSession();
httpSession.setAttribute("
4000
userID",result);
return "redirect:/home";
}重定向处加上判断session
@RequestMapping("/home")
public String home(HttpServletResponse response, HttpServletRequest request) {
response.setHeader("Cache-Control","no-cache"); //不对页面进行缓存,再次访问时将从服务器重新获取最新版本
response.setHeader("Cache-Control","no-store"); //任何情况下都不缓存页面
response.setDateHeader("Expires", 0); //使缓存过期
response.setHeader("Pragma","no-cache"); //HTTP 1.0 向后兼容
httpSession = request.getSession();
try{
userID = (int) httpSession.getAttribute("userID");
} catch (Exception e) {
logger.info("-----不存在HomeAction.httpSession.useID----");
return "index";
}
return "home";
}
相关文章推荐
- WebRequest和WebBrowser同时登陆,使用同一个sessionID
- JAVA Web 安全机制----使用filter验证session用户和页面缓存问题处理
- WebRequest和WebBrowser同时登陆,使用同一个sessionID
- 使用Token作为凭证,从App免登陆跳转到Web是否足够安全?
- 使用HttpClient模拟网站登陆sina邮箱(保持远程服务器session和cookie)
- [转载]使用 Microsoft SOAP Toolkit 2.0 建立安全 Web 服务
- 关于cookie 和 session的安全使用
- 使用 Microsoft SOAP Toolkit 2.0 建立安全 Web 服务
- TeeChart web控件使用时Session失效错误的解决办法
- 关于使用ISA SERVER禁用WEB登陆邮箱的问题
- 高分求HttpWebRequest使用axWebBrowser的session 和cookier的解决办法
- 2008年3月小记(设置Windows服务的依赖关系,配置MSMQ的访问权限,WCF的安全配置,删除重建网站,HttpWebRequest,一年中的周,在WCF中使用HttpContext,String.Join)
- 实战Acegi:使用Acegi作为基于Spring框架的WEB应用的安全框架
- 关于为了保证数据安全,让已登陆用户在不操作的情况下超时退出的处理
- 技术转载(鼠标点击X窗口关闭IE的同时清空session,最基本的就是处理用户重复登陆需要用到,我想这个的关键在于如何捕捉到关闭IE这个动作,之后再根据自身的需要使用session.invalidate()或者session.removeAttribute( "xxx "))
- 在web项目中使用session传递错误信息(草稿)
- 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- 使用无刷新技术,去请求该失效Session的页面,实现跳转到重新登陆页面。
- 关于安全的建议:对投入使用的 XML Web Services 禁用 HTTP-GET 和 HTTP-POST 协议
- 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie