java 自动登陆cookie注意事项
来源:互联网 发布:注册表清理软件 编辑:程序博客网 时间:2024/05/01 00:27
当我们做自动登录时,其实就是把用户名和密码保存到cookie中,我发现当我没对cookie设置过期时间时,它默认是session级别的,也就是把浏览器关闭了,cookie就不存在了,这样当第二天登陆时,肯定就不能实现自动登陆了,所以就要设置过期时间
下面是我用的spring mvc作的自动登陆的例子.
登陆控制器:
/** * 登陆页 * * @param request * @param modelMap * @return */// @ResponseBody@RequestMapping(value = "/toLogin", method = RequestMethod.GET)public String toLogin(HttpServletRequest request, ModelMap modelMap) {logger.info(" login");return "login";}/** * 登陆 * * @param request * @param model * @return */@RequestMapping(value = "/login", method = RequestMethod.POST)public String login(HttpServletRequest request, HttpServletResponse response) {String email = request.getParameter("email");// 用户名String password = request.getParameter("password");// 密码String isRemenber = request.getParameter("isRemenber");// 是否记住密码logger.info(email);logger.info(password);logger.info(isRemenber);User user = userService.getByEmail(email);// 通过email得到加密后的密码if (null != user && user.getPassword() != null&& user.getPassword().equals(password)) {// 这里应该是用明文密码与加密的密码进行校验,目前没有加密request.getSession().setAttribute("user", user);// 放到session中if (ISREMENBER.equals(isRemenber)) {// 记住密码Cookie usernamecookie = new Cookie("username", email);usernamecookie.setMaxAge(60 * 60 * 24 * 7);// 一定要设置缓存时间,要不然cookie是session级别的,关闭浏览器后,就会失效response.addCookie(usernamecookie);// 添加用户名Cookie passwordcookie = new Cookie("password", password);passwordcookie.setMaxAge(60 * 60 * 24 * 7);//7天的缓存时间response.addCookie(passwordcookie);// 添加密码}return "redirect:/index";} else {return "error";}}
登陆拦截器:
public class LoginInterceptor extends HandlerInterceptorAdapter {@Resourceprivate UserService userService;@Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {// TODO Auto-generated method stubSystem.out.println("preHandle");String username = null;String password = null;Cookie[] cookies = request.getCookies();if (cookies != null && cookies.length != 0) {for (Cookie cookie : cookies) {if ("username".equals(cookie.getName())) {username = cookie.getValue();}if ("password".equals(cookie.getName())) {password = cookie.getValue();}}}if (null != username && null != password) {User user = userService.getByEmail(username);if (null != user && user.getPassword() != null&& user.getPassword().equals(password)) {// 登陆成功request.getSession().setAttribute("user", user);// 放到session中response.sendRedirect(request.getContextPath() + "/index");return false;// 阻止向下执行实际的controller,如果没有retrun,它会继续执行实际的controller,但不会渲染实际的视图,而还是渲染上面的index视图}}return super.preHandle(request, response, handler);}@Overridepublic void postHandle(HttpServletRequest request,HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {// TODO Auto-generated method stubSystem.out.println("postHandle");super.postHandle(request, response, handler, modelAndView);}@Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex)throws Exception {// TODO Auto-generated method stubSystem.out.println("afterCompletion");super.afterCompletion(request, response, handler, ex);}}
在spring中配置登陆的拦截器:
<!-- 拦截器配置 --><mvc:interceptors><!-- 登陆拦截器 --><mvc:interceptor><mvc:mapping path="/toLogin"/><bean class="com.chenjun.mall.intercepters.LoginInterceptor"></bean></mvc:interceptor></mvc:interceptors>
这样在下次登陆时,就不会进入登陆页,直接进入主页了
0 0
- java 自动登陆cookie注意事项
- Cookie实现自动登陆
- 自动登陆--Cookie
- cookie实现自动登陆
- cookie实现自动登陆原理
- cookie实现自动登陆(1)
- cookie实现自动登陆(2)
- cookie实现自动登陆(3)
- cookie实现自动登陆原理
- cookie实现自动登陆原理
- cookie实现自动登陆原理
- Cookie用法案例-->自动登陆
- selenium python cookie 自动登陆
- php如何设置cookie实现自动登陆?
- C#.net cookie、session实现自动登陆
- Cookie简单是现自动登陆功能
- ssh+filter+cookie实现自动登陆
- java模拟cookie登陆操作
- ListView侧滑删除(SwipeMenuListView)
- div css 背景颜色透明度设置
- 常用工具---前30的英文缩写
- UIPickerView控件学习总结
- 网络传输协议之二进制反码校验和剖析
- java 自动登陆cookie注意事项
- 为什么ui控件属性用weak ,如果用strong会形成死循环
- Luainterface
- PhpMVC框架整合smarty模板
- 在Android4.0获取ipv4地址的方法
- 浅谈Maven
- hdu 5234 动态规划
- 详解CSS3属性box-shadow(附示例效果)
- Qt学习记录2 ico图标问题