`
knight_black_bob
  • 浏览: 853378 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

cookie java spring

阅读更多

 

 

 

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 cookie认证

    Spring Security 是一个强大的安全框架,用于Java和Spring应用程序。它为Web应用提供了全面的安全解决方案,包括身份验证、授权以及会话管理。在这个“spring-security cookie认证”主题中,我们将深入探讨如何利用...

    SpringSession同时支持Cookie和header策略

    本文将深入探讨SpringSession如何支持Cookie和header策略,并解析`CookieHeaderHttpSessionStrategy.java`这个文件中的关键概念和技术细节。 首先,我们来看标题提及的“SpringSession同时支持Cookie和header策略”...

    SpringTest cookie

    在IT行业中,Spring框架是Java开发中的一个核心组件,它为构建高质量的、可维护的Web应用程序提供了强大的支持。在Spring框架中,测试是保证代码质量和功能正确性的重要环节。当我们谈论“SpringTest cookie”时,这...

    JAVA相关面试题,Spring面试题

    ### JAVA相关面试题与Spring面试题详解 #### 一、String、StringBuffer、StringBuilder的区别以及String为什么不可变? - **String**: Java中的`String`类是不可变的对象,即一旦创建了一个`String`对象,其内容不...

    java 基于 Cookie 的 SSO 中间件 kisso 低代码

    在Java环境中,实现SSO的一个常见方式是通过Cookie。Kisso是一个基于Cookie的轻量级SSO中间件,它简化了SSO的实施过程,尤其是对于那些不熟悉复杂认证流程的开发者来说,Kisso的低代码特性使其变得更加友好。 Kisso...

    Java Spring项目国际化(i18n)详细方法与实例

    Java Spring项目国际化(i18n)详细方法与实例 Java Spring项目国际化是指在Java Spring项目中实现多语言支持和本地化信息的配置。国际化的目的是为了让软件系统能够适应不同的语言和地区环境,使得软件系统具有全球...

    Spring-Security_java_

    Spring Security 是一个强大的且高度可定制的身份验证和访问控制框架,专为 Java 应用程序设计。它旨在提供全面的安全解决方案,包括 Web 应用程序和 RESTful API 的保护。Spring Security 基于 Spring Framework 和...

    spring boot xss防御

    - 使用HTTPOnly Cookie:设置Cookie的HttpOnly属性,阻止JavaScript访问Cookie,减少CSRF(跨站请求伪造)和XSS的结合攻击。 - 启用Content Security Policy (CSP):通过配置CSP头部,限制浏览器只能加载指定来源...

    [课堂课件讲解]Java微服务实践-Spring Boot 安全.pptx

    Java微服务实践-Spring Boot 安全 本节课主要介绍了 Java 微服务实践中的 Spring Boot 安全性议题,包括客户端安全和服务端安全两方面的内容。 客户端安全: 1. CSRF 跨站请求伪造(Cross-site request forgery)...

    Cookie工具类

    在Java Web开发中,Cookie是服务器与客户端之间进行状态管理的一种机制。Cookie工具类是对Cookie操作的封装,方便开发者在实际应用中更加便捷地管理Cookie。以下是对`Cookie工具类`及其相关知识点的详细说明: 1. *...

    Spring-session2整合spring5+redis

    Spring Session的主要目标是解决传统的基于Cookie的JSESSIONID会话管理方式存在的问题,如跨域会话支持和安全性问题。通过将会话数据存储在服务器端的Redis中,我们可以实现更安全、更灵活的会话管理。Spring ...

    Java 使用HttpClient保持SESSION状态

    这通常涉及到Cookie管理,因为服务器通过Cookie来跟踪客户端的会话。下面我们将详细探讨如何在Java中使用HttpClient来实现这一目标。 首先,我们需要导入必要的Apache HttpClient库,通常包含以下依赖: ```xml ...

    Spring Security 资料合集

    Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理,它为Web应用和企业级应用提供了全面的安全服务。这个框架能够处理认证、授权以及各种安全相关的功能,帮助开发者构建安全、可扩展的应用。以下...

    cookie设置httpOnly和secure属性实现及问题

    ### Cookie设置httpOnly和secure属性实现及问题 #### 一、引言 在现代Web开发中,保护用户的隐私和数据安全至关重要。其中一种常见的做法就是通过设置Cookie的`httpOnly`和`secure`属性来增强安全性。这两个属性...

    cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击.zip_js设置cookie值

    或者,如果你使用的是Spring框架,可以在Cookie对象上设置HttpOnly属性: ```java Cookie cookie = new Cookie("username", "JohnDoe"); cookie.setPath("/"); cookie.setHttpOnly(true); response.addCookie...

    tomcat修改jsessionid在cookie中的名称

    JAVA_OPTS="-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname" ``` 2. **Windows环境:** ```cmd set JAVA_OPTS=-Dorg.apache.catalina.SESSION_COOKIE_NAME=yousessionname ``` 这里的 `...

    java web中使用cookie记住用户的账号和密码

    在上述描述中,开发者在SSM(Spring、SpringMVC、MyBatis)框架下实现了这个功能。以下是实现步骤的详细说明: 1. **登录页面**: 用户在登录界面填写账号和密码,同时有一个“记住我”选项。如果用户勾选此选项,...

    spring security 完整项目实例

    Spring Security 是一个强大的安全框架,用于为Java应用提供身份验证和授权服务。在这个完整的项目实例中,我们将深入探讨Spring Security的核心概念以及如何将其应用于实际的Web应用程序开发。 首先,我们从用户、...

    cookie记住账号密码

    - **服务器端处理**:在服务器端,如使用Java的Spring框架,可以利用Session和Cookie相结合的方式实现记住登录状态。Spring Security提供了RememberMe服务来处理这一步骤。 - **过期策略**:合理设置Cookie的过期...

    spring mvc项目

    可用于分析spring mvc源码、spring mvc父子容器初始化流程、session和cookie机制、spring session等,也可以用于学习Java Web(servlet、filter、listener等)、spring源码等。 该项目使用servlet3.0规范,无web.xml...

Global site tag (gtag.js) - Google Analytics