那又如何从cookie中获取userId 呢? 如果使用java

时间: 2023-10-29 09:06:06 浏览: 54
可以使用Java Servlet API中的HttpServletRequest类来获取cookie中的userId。具体代码如下: ```java Cookie[] cookies = request.getCookies(); // 获取请求中的所有cookie String userId = null; if (cookies != null) { for (Cookie cookie : cookies) { if (cookie.getName().equals("userId")) { // 判断cookie名是否为userId userId = cookie.getValue(); // 获取cookie中的userId值 break; } } } ``` 以上代码中,首先通过HttpServletRequest的getCookies()方法获取请求中的所有cookie,然后遍历所有cookie,判断cookie名是否为userId,如果是,则获取cookie中的userId值。最后得到的userId即为从cookie中获取到的值。
相关问题

java cookie 跨域共享_实现跨域cookie共享(转载)

在Web开发中,Cookie是常用的一种状态管理方式,它可以在客户端浏览器和服务器之间传递信息,并且具有跨域的能力。但是在跨域场景下,不同域名之间的Cookie是不能共享的。本文将介绍如何通过Java实现跨域Cookie共享的方法。 一、什么是跨域Cookie共享 在同源策略下,浏览器只允许当前域名下的页面访问该域名下的Cookie,而不允许其他域名的页面访问该域名下的Cookie。这就是所谓的Cookie跨域问题。 但是在实际开发中,我们经常需要在不同域名之间共享Cookie。例如,在OA系统中,用户登录后可能会跳转到其他子系统中,此时需要保持用户登录状态,就需要在不同域名之间共享Cookie。这就是所谓的跨域Cookie共享。 二、实现跨域Cookie共享的方法 在Java中,实现跨域Cookie共享的方法有两种: 1、使用第三方Cookie共享方案,例如:CAS、OAuth等。 2、手动实现Cookie共享,即在跨域场景下手动设置Cookie。 下面将介绍手动实现Cookie共享的方法。 三、手动实现Cookie共享 手动实现Cookie共享的原理很简单:在A域名下设置Cookie时,同时在B域名下也设置一个相同名称的Cookie。这样,在B域名下访问时就可以获取到A域名下的Cookie信息了。 具体实现步骤如下: 1、在A域名下设置Cookie时,同时在B域名下也设置一个相同名称的Cookie。 代码示例: ```java // 在A域名下设置Cookie Cookie cookie = new Cookie("userId", "123456"); cookie.setDomain(".domaina.com"); // 设置Cookie的域名为.domaina.com cookie.setPath("/"); // 设置Cookie的路径为根路径 cookie.setMaxAge(60 * 60 * 24 * 7); // 设置Cookie的生命周期为7天 response.addCookie(cookie); // 将Cookie添加到响应中 // 在B域名下设置相同名称的Cookie Cookie cookie = new Cookie("userId", "123456"); cookie.setDomain(".domainb.com"); // 设置Cookie的域名为.domainb.com cookie.setPath("/"); // 设置Cookie的路径为根路径 cookie.setMaxAge(60 * 60 * 24 * 7); // 设置Cookie的生命周期为7天 response.addCookie(cookie); // 将Cookie添加到响应中 ``` 2、在B域名下访问时,获取A域名下的Cookie信息。 代码示例: ```java // 获取A域名下的Cookie信息 Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if (cookie.getName().equals("userId")) { String userId = cookie.getValue(); // TODO: 处理业务逻辑 break; } } } ``` 需要注意的是,在设置Cookie时,域名要以点号开头,例如:.domaina.com。这样设置后,所有以domaina.com结尾的子域名都可以共享该Cookie。 四、总结 本文介绍了如何通过Java实现跨域Cookie共享的方法,即手动实现Cookie共享。在跨域场景下,手动实现Cookie共享可以很好地解决Cookie跨域问题。

java中的session

在Java Web开发中,Session是指在客户端与服务器之间建立的一种会话机制。当客户端第一次访问服务器时,服务器会创建一个Session对象,该对象会生成一个唯一的Session ID,将该ID存储到客户端的Cookie中,以便下次访问时可以通过该ID找到对应的Session对象。Session对象通常用于存储用户的登录信息、购物车信息等,以便在用户的不同请求之间进行数据共享和传递。 Session对象的生命周期由服务器控制,当Session过期或被销毁时,其中存储的数据也会被销毁。Session的默认过期时间是30分钟,但可以通过配置文件或代码来修改该时间。在Java中,可以通过HttpServletRequest对象的getSession()方法获得Session对象,例如: ``` HttpSession session = request.getSession(); ``` Session对象提供了一系列方法,如setAttribute()、getAttribute()、removeAttribute()等,用于对Session中的数据进行操作。例如,将用户ID存储到Session中: ``` session.setAttribute("userId", "123"); ``` 在后续的请求中,可以通过getAttribute()方法获取该数据: ``` String userId = (String)session.getAttribute("userId"); ```

相关推荐

package com.interceptor; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import com.alibaba.fastjson.JSONObject; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import com.annotation.IgnoreAuth; import com.entity.EIException; import com.entity.TokenEntity; import com.service.TokenService; import com.utils.R; /** * 权限(Token)验证 */ @Component public class AuthorizationInterceptor implements HandlerInterceptor { public static final String LOGIN_TOKEN_KEY = "Token"; @Autowired private TokenService tokenService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //支持跨域请求 response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Credentials", "true"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with,request-source,Token, Origin,imgType, Content-Type, cache-control,postman-token,Cookie, Accept,authorization"); response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin")); IgnoreAuth annotation; if (handler instanceof HandlerMethod) { annotation = ((HandlerMethod) handler).getMethodAnnotation(IgnoreAuth.class); } else { return true; } //从header中获取token String token = request.getHeader(LOGIN_TOKEN_KEY); /** * 不需要验证权限的方法直接放过 */ if(annotation!=null) { return true; } TokenEntity tokenEntity = null; if(StringUtils.isNotBlank(token)) { tokenEntity = tokenService.getTokenEntity(token); } if(tokenEntity != null) { request.getSession().setAttribute("userId", tokenEntity.getUserid()); request.getSession().setAttribute("role", tokenEntity.getRole()); request.getSession().setAttribute("tableName", tokenEntity.getTablename()); request.getSession().setAttribute("username", tokenEntity.getUsername()); return true; } PrintWriter writer = null; response.setCharacterEncoding("UTF-8"); response.setContentType("application/json; charset=utf-8"); try { writer = response.getWriter(); writer.print(JSONObject.toJSONString(R.error(401, "请先登录"))); } finally { if(writer != null){ writer.close(); } } // throw new EIException("请先登录", 401); return false; } }

最新推荐

recommend-type

Java 模拟cookie登陆简单操作示例

主要介绍了Java 模拟cookie登陆简单操作,结合实例形式分析了Java 模拟cookie登陆的相关原理与基本实现技巧,需要的朋友可以参考下
recommend-type

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

主要介绍了java web中使用cookie记住用户的账号和密码的相关资料,需要的朋友可以参考下
recommend-type

SpringBoot中使用Cookie实现记住登录的示例代码

主要介绍了SpringBoot中使用Cookie实现记住登录的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

C#基于WebBrowser获取cookie的实现方法

主要介绍了C#基于WebBrowser获取cookie的实现方法,实例分析了C#基于WebBrowser简单读取浏览谷歌网站cookie的相关技巧,非常简单实用,需要的朋友可以参考下
recommend-type

jQuery获取cookie值及删除cookie用法实例

cookie在jquery中有指定的cookie操作类,这里先来介绍在使用cookie操作类时的一些问题,然后介绍正确的使用方法。 使用JQuery操作cookie时 发生取的值不正确的问题: 结果发现cookie有四个不同的属性: 名称,内容,...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

get() { return this.photoState },

这是一个 JavaScript 中的方法定义,它定义了一个名为 `get` 的方法。这个方法没有参数,它返回了 `this.photoState`。在这个方法中,`this` 是指当前对象,而 `photoState` 是该对象的一个属性。通常情况下,`get` 方法用于获取对象的属性值,并且可以在获取属性值之前进行一些逻辑操作。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。