当前位置: 首页 > news >正文

网站开发虚拟主机是什么wordpress登录两次

网站开发虚拟主机是什么,wordpress登录两次,微信小程序工具类排行,wordpress投票系统session共享 什么是session共享 Session共享是指在分布式系统中#xff0c;在多个服务器之间共享同一个用户的会话数据。在传统的Web应用中#xff0c;用户的会话信息通常存储在服务器端的Session中#xff0c;而每个用户的请求在同一个服务器上处理#xff0c;因此可以轻…session共享 什么是session共享 Session共享是指在分布式系统中在多个服务器之间共享同一个用户的会话数据。在传统的Web应用中用户的会话信息通常存储在服务器端的Session中而每个用户的请求在同一个服务器上处理因此可以轻松地访问和管理会话信息。 为什么要使用session共享 在分布式系统中用户的请求可能会被不同的服务器处理这就导致了会话信息无法简单地在不同服务器之间共享的问题 解决方案 Session复制 当一个服务器上的会话发生变化时这些变化会被复制到其他所有服务器上。这意味着每个服务器都有会话数据的完整副本。但这种方法可能会导致性能问题和数据同步问题。 Session中心化存储 将会话数据存储在中央数据库或缓存系统中如JWT或Redis。当用户访问任何服务器时该服务器都会从中央存储中检索会话数据。这种方法可以确保数据的一致性和可伸缩性。 使用Cookie 将会话标识符存储在用户的浏览器中作为Cookie。当用户访问其他服务器时他们会带上这个Cookie服务器可以从这个标识符中检索会话数据。这种方法简单但依赖于用户的浏览器和Cookie的安全性。 粘性会话 使用负载均衡器确保一旦用户被分配到一个服务器他们后续的所有请求都被路由到该服务器。这确保了会话数据只存在于一个服务器上从而避免了共享的需求。但这种方法限制了服务器的可伸缩性。 分布式会话管理 使用专门的会话管理系统或服务来管理会话数据。这些系统通常提供高可用性、可扩展性和安全性。 Session中心化存储JWT介绍 什么是JWTJSON Web Token 在介绍JWT之前我们先来回顾一下利用token进行用户身份验证的流程 客户端使用用户名和密码请求登录服务端收到请求验证用户名和密码验证成功后服务端会签发一个token再把这个token返回给客户端客户端收到token后可以把它存储起来比如放到cookie中客户端每次向服务端请求资源时需要携带服务端签发的token可以在cookie或者header中携带服务端收到请求然后去验证客户端请求里面带着的token如果验证成功就向客户端返回请求数据 详细过程 前端发送登录请求用户在前端页面输入用户名和密码后前端将这些凭证发送到后端的登录接口。后端验证用户信息后端接收到登录请求后首先验证用户提供的用户名和密码是否正确。如果验证通过后端生成一个Token并将Token与用户信息关联起来。后端生成Token后端使用一种安全的算法如JWT生成一个TokenToken中包含用户的身份信息和其他必要的信息。Token可以包含用户ID、角色、过期时间等。后端返回Token给前端后端将生成的Token作为响应返回给前端。前端可以将Token保存在本地通常使用浏览器的Cookie或本地存储如localStorage来保存Token。前端发送请求时携带Token在后续的请求中前端需要在请求的头部通常是Authorization头中携带Token。这可以通过在每个请求的头部中添加Authorization: Bearer {Token}来实现。后端验证Token后端在接收到请求时会从请求头部中获取Token并进行验证。验证包括检查Token的有效性、过期时间以及用户的权限等。如果Token验证通过后端会处理请求并返回相应的数据。Token的刷新和注销在一些情况下Token可能会过期或需要刷新。前端可以通过发送刷新Token的请求来获取新的Token并更新本地保存的Token。另外用户也可以选择注销登录前端可以清除本地保存的Token。 这种基于token的认证方式相比传统的session认证方式更节约服务器资源并且对移动端和分布式更加友好。其优点如下 支持跨域访问cookie是无法跨域的而token由于没有用到cookie(前提是将token放到请求头中)所以跨域后不会存在信息丢失问题无状态token机制在服务端不需要存储session信息因为token自身包含了所有登录用户的信息所以可以减轻服务端压力更适用CDN可以通过内容分发网络请求服务端的所有资料更适用于移动端当客户端是非浏览器平台时cookie是不被支持的此时采用token认证方式会简单很多无需考虑CSRF由于不再依赖cookie所以采用token认证方式不会发生CSRF所以也就无需考虑CSRF的防御 而JWT就是上述流程当中token的一种具体实现方式其全称是JSON Web Token 官网地址JSON Web Tokens - jwt.io 通俗地说JWT的本质就是一个字符串它是将用户信息保存到一个Json字符串中然后进行编码后得到一个JWT token并且这个JWT token带有签名信息接收后可以校验是否被篡改所以可以用于在各方之间安全地将信息作为Json对象传输。JWT的认证流程如下 首先前端通过Web表单将自己的用户名和密码发送到后端的接口这个过程一般是一个POST请求。建议的方式是通过SSL加密的传输(HTTPS)从而避免敏感信息被嗅探后端核对用户名和密码成功后将包含用户信息的数据作为JWT的Payload将其与JWT Header分别进行Base64编码拼接后签名形成一个JWT Token形成的JWT Token就是一个如同lll.zzz.xxx的字符串        后端将JWT Token字符串作为登录成功的结果返回给前端。前端可以将返回的结果保存在浏览器中退出登录时删除保存的JWT Token即可        前端在每次请求时将JWT Token放入HTTP请求头中的Authorization属性中(解决XSS和XSRF问题)        后端检查前端传过来的JWT Token验证其有效性比如检查签名是否正确、是否过期、token的接收方是否是自己等等        验证通过后后端解析出JWT Token中包含的用户信息进行其他逻辑操作(一般是根据用户信息得到权限等)返回结果 为什么要用JWT 传统Session认证的弊端 我们知道HTTP本身是一种无状态的协议这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证认证通过后HTTP协议不会记录下认证后的状态那么下一次请求时用户还要再一次进行认证因为根据HTTP协议我们并不知道是哪个用户发出的请求所以为了让我们的应用能识别是哪个用户发出的请求我们只能在用户首次登录成功后在服务器存储一份用户登录的信息这份登录信息会在响应时传递给浏览器告诉其保存为cookie以便下次请求时发送给我们的应用这样我们的应用就能识别请求来自哪个用户了这是传统的基于session认证的过程 然而传统的session认证有如下的问题 每个用户的登录信息都会保存到服务器的session中随着用户的增多服务器开销会明显增大由于session是存在与服务器的物理内存中所以在分布式系统中这种方式将会失效。虽然可以将session统一保存到Redis中但是这样做无疑增加了系统的复杂性对于不需要redis的应用也会白白多引入一个缓存中间件对于非浏览器的客户端、手机移动端等不适用因为session依赖于cookie而移动端经常没有cookie因为session认证本质基于cookie所以如果cookie被截获用户很容易收到跨站请求伪造攻击。并且如果浏览器禁用了cookie这种方式也会失效前后端分离系统中更加不适用后端部署复杂前端发送的请求往往经过多个中间件到达后端cookie中关于session的信息会转发多次由于基于Cookie而cookie无法跨域所以session的认证也无法跨域对单点登录不适用 JWT认证的优势 对比传统的session认证方式JWT的优势是 简洁JWT Token数据量小传输速度也很快因为JWT Token是以JSON加密形式保存在客户端的所以JWT是跨语言的原则上任何web形式都支持不需要在服务端保存会话信息也就是说不依赖于cookie和session所以没有了传统session认证的弊端特别适用于分布式微服务单点登录友好使用Session进行身份认证的话由于cookie无法跨域难以实现单点登录。但是使用token进行认证的话 token可以被保存在客户端的任意位置的内存中不一定是cookie所以不依赖cookie不会存在这些问题适合移动端应用使用Session进行身份认证的话需要保存一份信息在服务器端而且这种方式会依赖到Cookie需要 Cookie 保存 SessionId所以不适合移动端 JWT结构 JWT由3部分组成标头(Header)、有效载荷(Payload)和签名(Signature)。在传输的时候会将JWT的3部分分别进行Base64编码后用.进行连接形成最终传输的字符串 JWTStringBase64(Header).Base64(Payload).HMACSHA256(base64UrlEncode(header).base64UrlEncode(payload),secret) 1.Header JWT头是一个描述JWT元数据的JSON对象alg属性表示签名使用的算法默认为HMAC SHA256写为HS256typ属性表示令牌的类型JWT令牌统一写为JWT。最后使用Base64 URL算法将上述JSON对象转换为字符串保存 {alg: HS256,typ: JWT }2.Payload 有效载荷部分是JWT的主体内容部分也是一个JSON对象包含需要传递的数据。 JWT指定七个默认字段供选择 iss发行人 exp到期时间 sub主题 aud用户 nbf在此之前不可用 iat发布时间 jtiJWT ID用于标识该JWT这些预定义的字段并不要求强制使用。除以上默认字段外我们还可以自定义私有字段一般会把包含用户信息的数据放到payload中如下例 {sub: 1234567890,name: Helen,admin: true }请注意默认情况下JWT是未加密的因为只是采用base64算法拿到JWT字符串后可以转换回原本的JSON数据任何人都可以解读其内容因此不要构建隐私信息字段比如用户的密码一定不能保存到JWT中以防止信息泄露。JWT只是适合在网络中传输一些非敏感的信息 3.Signature 签名哈希部分是对上面两部分数据签名需要使用base64编码后的header和payload数据通过指定的算法生成哈希以确保数据不会被篡改。首先需要指定一个密钥secret。该密码仅仅为保存在服务器中并且不能向用户公开。然后使用header中指定的签名算法默认情况下为HMAC SHA256根据以下公式生成签名 H M A C S H A 256 ( b a s e 64 U r l E n c o d e ( h e a d e r ) . b a s e 64 U r l E n c o d e ( p a y l o a d ) , s e c r e t ) HMACSHA256(base64UrlEncode(header) . base64UrlEncode(payload), secret) HMACSHA256(base64UrlEncode(header).base64UrlEncode(payload),secret) 在计算出签名哈希后JWT头有效载荷和签名哈希的三个部分组合成一个字符串每个部分用.分隔就构成整个JWT对象 注意JWT每部分的作用在服务端接收到客户端发送过来的JWT token之后 header和payload可以直接利用base64解码出原文从header中获取哈希签名的算法从payload中获取有效数据 signature由于使用了不可逆的加密算法无法解码出原文它的作用是校验token有没有被篡改。服务端获取header中的加密算法之后利用该算法加上secretKey对header、payload进行加密比对加密后的数据和客户端发送过来的是否一致。注意secretKey只能保存在服务端而且对于不同的加密算法其含义有所不同一般对于MD5类型的摘要加密算法secretKey实际上代表的是盐值
http://www.hkea.cn/news/14341265/

相关文章:

  • 公司网站制作视频建设信息港网站
  • 玩具网站的制作友链之家
  • 网站统计插件用织梦建设网站的步骤
  • 投简历找工作哪个网站好杭州建设网站需要多少钱
  • 南阳手机网站推广wordpress 分类 插件
  • 做衣服外单网站潍坊专业空心活塞杆
  • 网站模板免费吗成都市建设二维码检测网站
  • 网站的投票系统怎么做水果网站怎么做
  • 网站效果主要包括怎么做网址
  • 定制网站 北京iis ip访问网站
  • 权威的手机网站制作郑州seo优化推广
  • 网站系统的运营和维护做网站用软件
  • 安徽省卫生计生网站医共体建设跨境电商平台有哪些营销方式
  • 亚马逊deal网站怎么做重视网站建设
  • 手机营销网站建设君子不器 wordpress
  • 循化县公司网站建设网站建设代理协议
  • 哪些网站可以做网站网站开发环境集成安装包
  • 湖南省智慧团建登录入口seo如何做网站建设
  • 专业网站建设价位网站如何选取关键词
  • scratch少儿编程网站广州白云区有什么好玩的
  • 深圳网站建设售后服务长沙企业网站建设公
  • 三乡网站建设一键免费做网站
  • 东莞网站建议公司网站介绍范文
  • 以下区域不属于官方网站抖音网站怎么做
  • 自动化项目外包平台seo赚钱暴利
  • 金融互助平台网站制作动漫制作技术专业简历
  • 织梦首饰网站模板wordpress卡密销售插件
  • h5网站开发技术网站的赚钱方式
  • 网站文章页要不要做内链天津全包圆装饰公司官网
  • 代加工网站有哪些网站导航栏种类