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

discuz修改网站关键词上海抓捕236名

discuz修改网站关键词,上海抓捕236名,freenom怎么做网站,塑胶原料东莞网站建设目录 Session的缺点 JWT#xff08;Json Web Token#xff09; 优点#xff1a; 登录流程 JWT的基本使用 生成JWT 解码JWT 用JwtSecurityTokenHandler对JWT解码 注意 Session的缺点 对于分布式集群环境#xff0c;Session数据保存在服务器内存中就不合适了#…目录 Session的缺点 JWTJson Web Token 优点 登录流程 JWT的基本使用 生成JWT 解码JWT 用JwtSecurityTokenHandler对JWT解码 注意 Session的缺点 对于分布式集群环境Session数据保存在服务器内存中就不合适了应该放到一个中心状态服务器上。ASP.NET Core支持Session采用Redis、Memcached。中心状态服务器有性能问题。 JWTJson Web Token JWT把登录信息也称作令牌保存在客户端。为了防止客户端的数据造假保存在客户端的令牌经过了签名处理而签名的密钥只有服务器端才知道每次服务器端收到客户端提交过来的令牌的时候都要检查一下签名。 优点 状态保存在客户端适合分布式系统。签名保证了客户端无法数据造假。性能更高不需要和中心状态服务器通讯纯内存计算。 登录流程 客户端向服务器端发送用户名密码等请求登录。服务器端校验用户名密码如果校验成功则从数据库中取出这个用户的ID、角色等用户相关信息。服务器端采用只有服务器端才知道的密钥来对用户信息的JSON字符串进行签名形成签名数据。服务器端把用户信息的JSON字符串和签名拼接到一起形成JWT然后发送给客户端。客户端保存服务器端返回的JWT并且在客户端每次向服务器端发送请求的时候都带上这个JWT。每次服务器端收到浏览器请求中携带的JWT后服务器端用密钥对JWT的签名进行校验如果校验成功服务器端则从JWT中的JSON字符串中读取用户的信息。这样服务器端就知道这个请求对应的用户了。 JWT的基本使用 NuGetSystem.IdentityModel.Tokens.Jwt 生成JWT using Microsoft.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text;//claim是一个键值对用来存储用户信息比如用户id用户名角色等 var claims new ListClaim() {new Claim(ClaimTypes.NameIdentifier, 123),new Claim(ClaimTypes.Name, ljy),new Claim(ClaimTypes.Role, admin),new Claim(ClaimTypes.Role, user),new Claim(Passport, E90000082),new Claim(Id, E90000082) }; string key jddsjf54$$%45445%^$gvdfgd8d454dgji34jk; //设置过期时间30分钟后过期 DateTime expires DateTime.Now.AddMinutes(30); byte[] keyBytes Encoding.UTF8.GetBytes(key); //对称秘钥 var secKey new SymmetricSecurityKey(keyBytes); //签名凭据 var credentials new SigningCredentials(secKey, SecurityAlgorithms.HmacSha256Signature); //创建jwtSecurityToken var tokenDescriptor new JwtSecurityToken(claims: claims,//声明expires: expires,//过期时间signingCredentials: credentials//签名凭据); //生成token string jwt new JwtSecurityTokenHandler().WriteToken(tokenDescriptor); Console.WriteLine(jwt); 解码JWT using System.Text;string jwt eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IjEyMyIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWUiOiJsankiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOlsiYWRtaW4iLCJ1c2VyIl0sIlBhc3Nwb3J0IjoiRTkwMDAwMDgyIiwiSWQiOiJFOTAwMDAwODIiLCJleHAiOjE3Mzg4MzAxMTB9.frI1BwyedlIfuIcWgkxfNsbXkaJJ01M3iNo7wXt6Fy8;string[] strs jwt.Split(.); string header JwtDecode(strs[0]); string payload JwtDecode(strs[1]); Console.WriteLine(---head---); Console.WriteLine(header); Console.WriteLine(---payload---); Console.WriteLine(payload);string JwtDecode(string s) {s s.Replace(-, ).Replace(_, /);switch (s.Length % 4){case 2:s ;break;case 3:s ;break;}var bytes Convert.FromBase64String(s);return Encoding.UTF8.GetString(bytes); } 用JwtSecurityTokenHandler对JWT解码 using Microsoft.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text;string jwt eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6IjEyMyIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWUiOiJsankiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOlsiYWRtaW4iLCJ1c2VyIl0sIlBhc3Nwb3J0IjoiRTkwMDAwMDgyIiwiSWQiOiJFOTAwMDAwODIiLCJleHAiOjE3Mzg4MzAxMTB9.frI1BwyedlIfuIcWgkxfNsbXkaJJ01M3iNo7wXt6Fy8;string secKey jddsjf54$$%45445%^$gvdfgd8d454dgji34jk; JwtSecurityTokenHandler tokenHandler new(); //设置验证参数 TokenValidationParameters valParam new(); SymmetricSecurityKey securityKey new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secKey)); //获取或设置用于签名验证的 SecurityKey valParam.IssuerSigningKey securityKey; //不验证发行者 valParam.ValidateIssuer false; //不验证接受者 valParam.ValidateAudience false; ClaimsPrincipal claimsPrincipal tokenHandler.ValidateToken(jwt,valParam, out SecurityToken secToken); foreach (Claim claim in claimsPrincipal.Claims) {Console.WriteLine(${claim.Type}{claim.Value}); }注意 负载中的内容是明文形式保存的 不要把不能被客户端知道的信息放到JWT中
http://www.hkea.cn/news/14533452/

相关文章:

  • 行政事业单位网站建设网站做seo屏蔽搜索引擎
  • 银川做网站哪家好访问量大的网站
  • Wordpress 免登录付费查看aso关键词优化计划
  • 个人姓名最多备案多少个网站昆明seo代理商
  • 中国平湖首页规划建设局网站手机上制作ppt的软件
  • 公司做英文网站网络广告名词解释
  • 客村网站建设机械产品网络推广怎么做
  • 网站后台m南山网站建设
  • 半路出家去学计算机网站开发网站颜色 字体
  • 连云港网站建设富阳做网站公司
  • 网站开发技术包括wordpress 域
  • 前端网站开发流程图磁力猫torrent kitty
  • 佛山建网站费用wordpress文章添加关注公众号
  • 上海做网站哪里有免费发广告的软件有哪些
  • 网站里的动效怎么做文成做网站
  • 海南彩票网站开发手机一键生成户型图
  • 医院网站建设策划书长春百度推广哪家好
  • 网站制作流程详解(学做网站第一步)城乡建设部网站房产查询
  • 网站备案幕布照规范品牌网站建设有什么作用
  • 企业网站设计制作价格网站的支付接口对接怎么做
  • 扁平式网站建设南京网站设计开发
  • 举报网站平台浏览器直接进入网站
  • 文登区做网站的公司代理一款游戏需要多少钱
  • 惠州惠城区建设网站重庆首页工程设计咨询有限责任公司
  • 新农村基础设施建设网站如何自己创建购物网站
  • 建站行业有哪些项目管理软件worktile
  • 长春微网站wordpress实现动态功能
  • 网站建设设计师网上买东西
  • 蒙自建设网站阳泉网站建设
  • 品牌网站建设4a小蝌蚪公司画册