package com.fusionability.web.utils; import java.util.HashMap; import java.util.Map; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CookieTool { public static int maxAge = 7* 24 * 60 * 60; //保存7天 public static void addCookie(HttpServletResponse response, String name, String value, int maxAge) { Cookie cookie = new Cookie(name, value); cookie.setPath("/"); if (maxAge > 0) cookie.setMaxAge(maxAge); response.addCookie(cookie); } public static Cookie getCookieByName(HttpServletRequest request, String name) { Map<String, Cookie> cookieMap = ReadCookieMap(request); if (cookieMap.containsKey(name)) { Cookie cookie = (Cookie) cookieMap.get(name); return cookie; } else { return null; } } private static Map<String, Cookie> ReadCookieMap(HttpServletRequest request) { Map<String, Cookie> cookieMap = new HashMap<String, Cookie>(); Cookie[] cookies = request.getCookies(); if (null != cookies) { for (Cookie cookie : cookies) { cookieMap.put(cookie.getName(), cookie); } } return cookieMap; } }
isChecked = getRequest().getParameterValues("isChecked"); if (isChecked != null && isChecked.length > 0 ) { CookieTool.addCookie(getResponse(), "username", user.getUsername(), CookieTool.maxAge); CookieTool.addCookie(getResponse(), "userpswd", user.getUserpswd(), CookieTool.maxAge); }
public String updateUserInfo(){ user = userService.updateUser(user); if(user != null){ getSession().setAttribute(Constants.SESSION_USER, user); CookieTool.addCookie(ServletActionContext.getResponse(), "username", user.getUsername(), CookieTool.maxAge); // 清除Cookie CookieTool.addCookie(ServletActionContext.getResponse(), "userpswd", user.getUserpswd(), CookieTool.maxAge); // 清除Cookie return SUCCESS; } return ERROR; }
package com.fusionability.web.interceptor; import javax.servlet.ServletContext; import javax.servlet.ServletRequest; import javax.servlet.http.Cookie; import org.apache.struts2.ServletActionContext; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.fusionability.user.service.UserService; import com.fusionability.web.bean.User; import com.fusionability.web.utils.Constants; import com.fusionability.web.utils.CookieTool; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; /** * 认证拦截器(可以拦截URL的跳转) * @author liuzhengyi */ public class AuthInterceptor extends AbstractInterceptor { private static final long serialVersionUID = 8514282210475728866L; @Override public String intercept(ActionInvocation invocation) throws Exception { if("/FusionAbility/user/register.action".equals(ServletActionContext.getRequest().getRequestURI()) //||"/FusionAbility/user/login.action".equals(ServletActionContext.getRequest().getRequestURI()) ||"/FusionAbility/user/doRegister.action".equals(ServletActionContext.getRequest().getRequestURI()) ||"/FusionAbility/user/doLogin.action".equals(ServletActionContext.getRequest().getRequestURI()) ||"/FusionAbility/user/isExistUser.action".equals(ServletActionContext.getRequest().getRequestURI()) ||"/FusionAbility/user/otherUserAction.action".equals(ServletActionContext.getRequest().getRequestURI()) ||"/FusionAbility/user/goUpdateRetrievepassword.action".equals(ServletActionContext.getRequest().getRequestURI())){ return invocation.invoke(); } User user = (User)ServletActionContext.getRequest().getSession().getAttribute(Constants.SESSION_USER); if (user == null) { //重定向到登录页面 Cookie cokLoginName = CookieTool.getCookieByName(ServletActionContext.getRequest(), "username"); Cookie cokLoginPwd = CookieTool.getCookieByName(ServletActionContext.getRequest(), "userpswd"); if (cokLoginName != null && cokLoginPwd != null && cokLoginName.getValue() != null && cokLoginPwd.getValue() != null) { String loginName = cokLoginName.getValue(); String loginPwd = cokLoginPwd.getValue(); User user2 = new User(); user2.setUsername(loginName); user2.setUserpswd(loginPwd); ServletContext sc = ServletActionContext.getServletContext(); ApplicationContext ac= WebApplicationContextUtils.getWebApplicationContext(sc); UserService userService = (UserService) ac.getBean("userService"); User user3 = userService.getUser(user2); if (user3 == null) { CookieTool.addCookie(ServletActionContext.getResponse(), "username", null, 0); // 清除Cookie CookieTool.addCookie(ServletActionContext.getResponse(), "userpswd", null, 0); // 清除Cookie return Action.LOGIN; }else{ ServletActionContext.getRequest().getSession().setAttribute(Constants.SESSION_USER,user3); return invocation.invoke(); } }else{ return Action.LOGIN; } } return invocation.invoke(); } }
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
Spring Security 是一个强大的安全框架,用于Java和Spring应用程序。它为Web应用提供了全面的安全解决方案,包括身份验证、授权以及会话管理。在这个“spring-security cookie认证”主题中,我们将深入探讨如何利用...
本文将深入探讨SpringSession如何支持Cookie和header策略,并解析`CookieHeaderHttpSessionStrategy.java`这个文件中的关键概念和技术细节。 首先,我们来看标题提及的“SpringSession同时支持Cookie和header策略”...
在IT行业中,Spring框架是Java开发中的一个核心组件,它为构建高质量的、可维护的Web应用程序提供了强大的支持。在Spring框架中,测试是保证代码质量和功能正确性的重要环节。当我们谈论“SpringTest cookie”时,这...
### JAVA相关面试题与Spring面试题详解 #### 一、String、StringBuffer、StringBuilder的区别以及String为什么不可变? - **String**: Java中的`String`类是不可变的对象,即一旦创建了一个`String`对象,其内容不...
在Java环境中,实现SSO的一个常见方式是通过Cookie。Kisso是一个基于Cookie的轻量级SSO中间件,它简化了SSO的实施过程,尤其是对于那些不熟悉复杂认证流程的开发者来说,Kisso的低代码特性使其变得更加友好。 Kisso...
Java Spring项目国际化(i18n)详细方法与实例 Java Spring项目国际化是指在Java Spring项目中实现多语言支持和本地化信息的配置。国际化的目的是为了让软件系统能够适应不同的语言和地区环境,使得软件系统具有全球...
Spring Security 是一个强大的且高度可定制的身份验证和访问控制框架,专为 Java 应用程序设计。它旨在提供全面的安全解决方案,包括 Web 应用程序和 RESTful API 的保护。Spring Security 基于 Spring Framework 和...
- 使用HTTPOnly Cookie:设置Cookie的HttpOnly属性,阻止JavaScript访问Cookie,减少CSRF(跨站请求伪造)和XSS的结合攻击。 - 启用Content Security Policy (CSP):通过配置CSP头部,限制浏览器只能加载指定来源...
Java微服务实践-Spring Boot 安全 本节课主要介绍了 Java 微服务实践中的 Spring Boot 安全性议题,包括客户端安全和服务端安全两方面的内容。 客户端安全: 1. CSRF 跨站请求伪造(Cross-site request forgery)...
在Java Web开发中,Cookie是服务器与客户端之间进行状态管理的一种机制。Cookie工具类是对Cookie操作的封装,方便开发者在实际应用中更加便捷地管理Cookie。以下是对`Cookie工具类`及其相关知识点的详细说明: 1. *...
Spring Session的主要目标是解决传统的基于Cookie的JSESSIONID会话管理方式存在的问题,如跨域会话支持和安全性问题。通过将会话数据存储在服务器端的Redis中,我们可以实现更安全、更灵活的会话管理。Spring ...
这通常涉及到Cookie管理,因为服务器通过Cookie来跟踪客户端的会话。下面我们将详细探讨如何在Java中使用HttpClient来实现这一目标。 首先,我们需要导入必要的Apache HttpClient库,通常包含以下依赖: ```xml ...
Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web应用和企业级应用提供了全面的安全服务。这个框架能够处理认证、授权以及各种安全相关的功能,帮助开发者构建安全、可扩展的应用。以下...
### Cookie设置httpOnly和secure属性实现及问题 #### 一、引言 在现代Web开发中,保护用户的隐私和数据安全至关重要。其中一种常见的做法就是通过设置Cookie的`httpOnly`和`secure`属性来增强安全性。这两个属性...
或者,如果你使用的是Spring框架,可以在Cookie对象上设置HttpOnly属性: ```java Cookie cookie = new Cookie("username", "JohnDoe"); cookie.setPath("/"); cookie.setHttpOnly(true); response.addCookie...
JAVA_OPTS="-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname" ``` 2. **Windows环境:** ```cmd set JAVA_OPTS=-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname ``` 这里的 `...
在上述描述中,开发者在SSM(Spring、SpringMVC、MyBatis)框架下实现了这个功能。以下是实现步骤的详细说明: 1. **登录页面**: 用户在登录界面填写账号和密码,同时有一个“记住我”选项。如果用户勾选此选项,...
Spring Security 是一个强大的安全框架,用于为Java应用提供身份验证和授权服务。在这个完整的项目实例中,我们将深入探讨Spring Security的核心概念以及如何将其应用于实际的Web应用程序开发。 首先,我们从用户、...
- **服务器端处理**:在服务器端,如使用Java的Spring框架,可以利用Session和Cookie相结合的方式实现记住登录状态。Spring Security提供了RememberMe服务来处理这一步骤。 - **过期策略**:合理设置Cookie的过期...
可用于分析spring mvc源码、spring mvc父子容器初始化流程、session和cookie机制、spring session等,也可以用于学习Java Web(servlet、filter、listener等)、spring源码等。 该项目使用servlet3.0规范,无web.xml...