海珠五屏网站建设,wordpress 调用page,网站开发用c语言吗,天元建设集团有限公司重庆分公司cookie和session结合使用
web开发发展至今#xff0c;cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里#xff0c;一般有两种存储方式#xff1a;
1、存储在服务端#xff1a;通过cookie存储一个session_id#xff0c;然后具体的数据则是保…cookie和session结合使用
web开发发展至今cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里一般有两种存储方式
1、存储在服务端通过cookie存储一个session_id然后具体的数据则是保存在session中。如果用户已经登录则服务器会在cookie中保存一个session_id下次再次请求的时候会把该session_id携带上来服务器根据session_id在session库中获取用户的session数据。就能知道该用户到底是谁以及之前保存的一些状态信息。这种专业术语叫做server side session。 2、将session数据加密然后存储在cookie中。这种专业术语叫做client side session。flask采用的就是这种方式但是也可以替换成其他形式。
JWT
JWT由三个部分组成 Header头部通常由两部分信息组成token 的类型和使用的签名算法通常是 {alg:HS256,typ:JWT}。 Payload负载部分是 JWT 的主要信息存储部分也是 JWT 的核心所在。它包含了一些声明Claim即对实体通常指用户及其它数据的描述比如用户名、用户 ID、角色、过期时间等由 JSON 对象来表示。 Signature签名部分是整个 JWT 的防篡改保证。通常是将前两部分用 base64 编码后拼接起来然后使用指定的算法例如 HMAC、RSA进行加密生成的。通过签名可以验证 JWT 是否被篡改过。
JWT的工作流程如下 用户登录用户在客户端如浏览器输入用户名和密码发送到认证中心授权服务器进行验证。 认证中心验证认证中心验证用户的用户名和密码是否正确如果正确则生成一个JWT并将其发送回客户端。 /*生成JWT*/
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;public class JwtUtil {private static final String SECRET_KEY yourSecretKey;public static String generateToken(String username, long expirationTimeMillis) {Date now new Date();Date expirationTime new Date(now.getTime() expirationTimeMillis);return Jwts.builder().setSubject(username).setIssuedAt(now).setExpiration(expirationTime).signWith(SignatureAlgorithm.HS256, SECRET_KEY).compact();}
}客户端存储JWT客户端浏览器收到JWT后通常会将其存储在Cookie或LocalStorage中。 访问应用系统当用户访问其他应用系统时会将存储的JWT附加到HTTP请求的头部中。
token、session、cookie
Token和SessionCookie都是实现用户认证和授权的方式但它们在实现上有一些区别。 Token是一种无状态的认证机制它是基于加密的令牌服务器不需要保存用户的登录状态。当用户登录成功后服务器会生成一个Token并返回给客户端。客户端之后的每次请求都需要携带这个Token服务器通过解析Token来验证用户身份和权限。Token通常使用在前后端分离的架构中适用于分布式应用和跨域请求。 SessionCookie是一种有状态的认证机制它通过在客户端浏览器中保存一个Session ID将用户的登录状态保存在服务器端的Session中。服务器在用户登录时会创建一个Session并将Session ID通过Cookie发送给客户端客户端在后续的请求中会自动携带该Cookie。服务器通过Session ID来查找对应的Session从而识别用户和验证用户状态。SessionCookie通常使用在传统的Web应用中需要服务器端保存用户的登录状态。
总体来说Token更加适用于无状态、分布式、跨域等场景而SessionCookie更加适用于有状态、传统Web应用等场景。选择哪种方式取决于你的应用需求和架构设计。在现代的Web开发中由于前后端分离和分布式架构的普及Token认证方式较为流行。但对于一些特定场景和遗留系统SessionCookie仍然有其应用价值。