江阴做网站的企业wordpress更改图片大小

张小明 2026/1/1 15:47:45
江阴做网站的企业,wordpress更改图片大小,网站审核要多久,如何建立自己的网站步骤最近发现有些小伙伴#xff0c;对Token、Session、Cookie、JWT、OAuth2这些概念非常容易搞混。有些小伙伴在工作中可能会遇到过这样的困惑#xff1a;做登录功能时#xff0c;到底该用Session还是JWT#xff1f;OAuth2和Token是什么关系#xff1f;为什么有的方案要把Toke…最近发现有些小伙伴对Token、Session、Cookie、JWT、OAuth2这些概念非常容易搞混。有些小伙伴在工作中可能会遇到过这样的困惑做登录功能时到底该用Session还是JWTOAuth2和Token是什么关系为什么有的方案要把Token存在Cookie里今天这篇文章专门跟大家一起聊聊这个话题希望对你会有所帮助。一、从餐厅就餐模型开始讲为了让大家更好理解我先用一个餐厅就餐的比喻来解释这些概念image现在让我们深入每个概念的技术细节。二、CookieHTTP的世界身份证2.1 什么是CookieCookie是存储在浏览器端的一小段文本数据由服务器通过HTTP响应头的Set-Cookie字段发送给浏览器浏览器随后会自动在每次请求中通过Cookie头将其带回给服务器。工作原理image2.2 Cookie实战代码// 服务器设置CookiePostMapping(/login)public ResponseEntity login(RequestBody User user, HttpServletResponse response) {if (authService.authenticate(user)) {Cookie cookie new Cookie(session_id, generateSessionId());cookie.setMaxAge(3600); // 1小时有效期cookie.setHttpOnly(true); // 防止XSS攻击cookie.setSecure(true); // 仅HTTPS传输cookie.setPath(/); // 对整个站点有效response.addCookie(cookie);return ResponseEntity.ok().build();}return ResponseEntity.status(401).build();}// 读取CookieGetMapping(/profile)public ResponseEntity getProfile(CookieValue(session_id) String sessionId) {User user sessionService.getUserBySession(sessionId);return ResponseEntity.ok(user);}2.3 Cookie的重要属性属性 作用 安全建议HttpOnly 防止JavaScript访问 必须设置为true防XSSSecure 仅通过HTTPS传输 生产环境必须设置为trueSameSite 控制跨站请求时是否发送Cookie 建议设置为Strict或LaxMax-Age 设置Cookie有效期 根据业务安全性要求设置三、Session服务端的用户档案3.1 什么是SessionSession是存储在服务器端的用户状态信息。服务器为每个用户创建一个唯一的Session ID并通过Cookie将这个ID传递给浏览器浏览器后续请求时带上这个ID服务器就能识别用户身份。Session存储结构// 典型的Session数据结构public class UserSession {private String sessionId;private String userId;private String username;private Date loginTime;private Date lastAccessTime;private MapString, Object attributes; // 自定义属性// 省略getter/setter}3.2 Session实战代码// 基于Spring Session的实现PostMapping(/login)public String login(RequestParam String username,RequestParam String password,HttpSession session) {User user userService.authenticate(username, password);if (user ! null) {// 将用户信息存入Sessionsession.setAttribute(currentUser, user);session.setAttribute(loginTime, new Date());return redirect:/dashboard;}return login?errortrue;}GetMapping(/dashboard)public String dashboard(HttpSession session) {// 从Session获取用户信息User user (User) session.getAttribute(currentUser);if (user null) {return redirect:/login;}return dashboard;}3.3 Session的存储方案1. 内存存储默认# application.ymlserver:servlet:session:timeout: 1800 # 30分钟过期时间2. Redis分布式存储ConfigurationEnableRedisHttpSession // 启用Redis Session存储public class SessionConfig {Beanpublic LettuceConnectionFactory connectionFactory() {return new LettuceConnectionFactory();}}3. Session集群同步问题image四、Token去中心化的身份令牌4.1 什么是TokenToken是一种自包含的身份凭证服务器不需要在服务端存储会话状态所有必要信息都包含在Token本身中。Token vs Session 核心区别image4.2 Token实战代码// 生成Tokenpublic String generateToken(User user) {long currentTime System.currentTimeMillis();return JWT.create().withIssuer(myapp) // 签发者.withSubject(user.getId()) // 用户ID.withClaim(username, user.getUsername()).withClaim(role, user.getRole()).withIssuedAt(new Date(currentTime)) // 签发时间.withExpiresAt(new Date(currentTime 3600000)) // 过期时间.sign(Algorithm.HMAC256(secret)); // 签名密钥}// 验证Tokenpublic boolean validateToken(String token) {try {JWTVerifier verifier JWT.require(Algorithm.HMAC256(secret)).withIssuer(myapp).build();DecodedJWT jwt verifier.verify(token);return true;} catch (JWTVerificationException exception) {return false;}}五、JWT现代化的Token标准5.1 什么是JWTJWTJSON Web Token是一种开放标准RFC 7519用于在各方之间安全地传输信息作为JSON对象。这种信息可以被验证和信任因为它是数字签名的。JWT结构header.payload.signature解码示例// Header{alg: HS256,typ: JWT}// Payload{sub: 1234567890,name: John Doe,iat: 1516239022,exp: 1516242622}// SignatureHMACSHA256(base64UrlEncode(header) . base64UrlEncode(payload),secret)5.2 JWT实战代码// 创建JWTpublic String createJWT(User user) {return Jwts.builder().setHeaderParam(typ, JWT).setSubject(user.getId()).setIssuer(myapp).setIssuedAt(new Date()).setExpiration(new Date(System.currentTimeMillis() 3600000)).claim(username, user.getUsername()).claim(role, user.getRole()).signWith(SignatureAlgorithm.HS256, secret.getBytes()).compact();}// 解析JWTpublic Claims parseJWT(String jwt) {return Jwts.parser().setSigningKey(secret.getBytes()).parseClaimsJws(jwt).getBody();}// 在Spring Security中使用JWTComponentpublic class JwtFilter extends OncePerRequestFilter {Overrideprotected void doFilterInternal(HttpServletRequest request,HttpServletResponse response,FilterChain chain) {String token resolveToken(request);if (token ! null validateToken(token)) {Authentication auth getAuthentication(token);SecurityContextHolder.getContext().setAuthentication(auth);}chain.doFilter(request, response);}}5.3 JWT的最佳实践1. 安全存储// 前端安全存储方案// 不推荐localStorage易受XSS攻击// 推荐HttpOnly Cookie防XSS或内存存储2. 令牌刷新机制// 双Token机制Access Token Refresh Tokenpublic class TokenPair {private String accessToken; // 短期有效1小时private String refreshToken; // 长期有效7天}// 刷新令牌接口PostMapping(/refresh)public ResponseEntity refresh(RequestBody RefreshRequest request) {String refreshToken request.getRefreshToken();if (validateRefreshToken(refreshToken)) {String userId extractUserId(refreshToken);String newAccessToken generateAccessToken(userId);return ResponseEntity.ok(new TokenPair(newAccessToken, refreshToken));}return ResponseEntity.status(401).build();}六、OAuth 2.0授权框架之王6.1 什么是OAuth 2.0OAuth 2.0是一个授权框架允许第三方应用在获得用户授权后代表用户访问受保护的资源。OAuth 2.0角色资源所有者Resource Owner用户客户端Client第三方应用授权服务器Authorization Server颁发访问令牌资源服务器Resource Server托管受保护资源6.2 OAuth 2.0授权码流程image6.3 OAuth 2.0实战代码// Spring Security OAuth2配置ConfigurationEnableAuthorizationServerpublic class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {Autowiredprivate AuthenticationManager authenticationManager;Overridepublic void configure(ClientDetailsServiceConfigurer clients) throws Exception {clients.inMemory().withClient(clientapp).secret(passwordEncoder.encode(123456)).authorizedGrantTypes(authorization_code, refresh_token).scopes(read, write).redirectUris(http://localhost:8080/callback);}Overridepublic void configure(AuthorizationServerEndpointsConfigurer endpoints) {endpoints.authenticationManager(authenticationManager).tokenStore(tokenStore()).accessTokenConverter(accessTokenConverter());}}// 资源服务器配置ConfigurationEnableResourceServerpublic class ResourceServerConfig extends ResourceServerConfigurerAdapter {Overridepublic void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers(/api/public/**).permitAll().antMatchers(/api/private/**).authenticated().antMatchers(/api/admin/**).hasRole(ADMIN);}}七、五大概念对比为了让大家更清晰地理解这五个概念的关系和区别我准备了以下对比表格7.1 功能定位对比概念 本质 存储位置 主要用途 特点Cookie HTTP状态管理机制 浏览器 维持会话状态 自动携带有大小限制Session 服务端会话信息 服务器 存储用户状态 服务端状态需要存储管理Token 访问凭证 客户端/服务端 身份认证 自包含可验证JWT Token的一种实现标准 客户端/服务端 安全传输信息 标准化自包含可签名OAuth2 授权框架 不直接存储 第三方授权 标准化授权流程7.2 应用场景对比场景 推荐方案 原因说明传统Web应用 Session Cookie 简单易用生态成熟前后端分离应用 JWT 无状态适合API认证第三方登录 OAuth 2.0 标准化授权安全可靠微服务架构 JWT 分布式认证无需会话同步移动端应用 Token 轻量级适合移动网络7.3 安全考虑对比安全威胁 Cookie方案防护 Token/JWT方案防护XSS攻击 HttpOnly Cookie 避免localStorage存储CSRF攻击 SameSite Cookie 自定义HeaderCSRF Token令牌泄露 短期有效HTTPS 短期有效HTTPS刷新机制数据篡改 服务端验证 签名验证总结通过今天的深入探讨我们可以得出以下结论Cookie是载体HTTP协议的状态管理机制是Session和Token的传输媒介之一。Session是状态服务端维护的会话状态需要借助Cookie或URL重写来实现。Token是凭证认证授权的凭证可以放在Cookie、Header或URL中。JWT是标准Token的一种标准化实现自包含、可验证、可信任。OAuth2是框架授权框架定义了完整的第三方授权流程。最终建议简单Web应用Session Cookie前后端分离JWT HTTP Header第三方授权OAuth 2.0 JWT
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

盐山网站建设价格网站用户界面设计

第一章:LangGraph多Agent系统与Docker部署概述 LangGraph 是一种基于图结构的多智能体(Multi-Agent)协作框架,允许开发者通过定义节点与边的方式构建复杂的 Agent 协作流程。每个节点代表一个独立的 Agent 或操作步骤,…

张小明 2025/12/30 5:45:23 网站建设

移动网站 pc网站的区别吗阳泉软件定制网站建设

终极指南:使用vgpu_unlock解锁消费级NVIDIA显卡的完整vGPU虚拟化功能 【免费下载链接】vgpu_unlock Unlock vGPU functionality for consumer grade GPUs. 项目地址: https://gitcode.com/gh_mirrors/vg/vgpu_unlock 在虚拟化技术日益成熟的今天,…

张小明 2025/12/30 5:44:50 网站建设

江苏省建设网站学校网站建设项目背景

2025水质综合处理器桑拿智能水管家行业权威榜单极致体验与降本增效如何平衡?看头部品牌如何重塑行业标准引言随着浴室行业竞争白热化,消费者对水质体验的敏感度持续攀升——女性用户吐槽漂浮药味、年轻客群对水质浑浊率杀评、家庭客群则因孩子皮肤不适直…

张小明 2025/12/30 5:44:17 网站建设

企业网站源码排行小游戏网站模板

Mac必备神器:3分钟搞定NTFS读写,彻底告别"只读"限制! 【免费下载链接】Free-NTFS-for-Mac Nigate,一款支持苹果芯片的Free NTFS for Mac小工具软件。NTFS R/W for macOS. Support Intel/Apple Silicon now. 项目地址:…

张小明 2025/12/30 5:43:44 网站建设

cnnic可信网站必须做吗?网站百度排名提升

IDEA插件阅读神器:Thief-Book让你的工作间隙充满知识乐趣 【免费下载链接】thief-book-idea IDEA插件版上班摸鱼看书神器 项目地址: https://gitcode.com/gh_mirrors/th/thief-book-idea 在紧张的编程工作中,你是否也渴望能在代码间隙享受片刻的阅…

张小明 2025/12/30 5:43:11 网站建设

扁平化蓝色网站电商网站开发计划书

TMB单组份显色液 1.包装清单: 产品编号 产品名称 规格 ELS0010 TMB单组份显色液 100ml/500ml/1000ml 2.保存条件:2-8C干燥避光保存, 24个月有效。 3.产品介绍: TMB(3,3’&…

张小明 2025/12/30 5:41:31 网站建设