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

合肥高端网站建设公司企业网站整合

合肥高端网站建设公司,企业网站整合,WordPress媒体库丢失,摄影网站公司1.JWT结构 JSON Web Token#xff08;JWT#xff09;是一种用于在网络应用之间安全传输声明的开放标准#xff08;RFC 7519#xff09;。它通常由三部分组成#xff0c;以紧凑的字符串形式表示#xff0c;在身份验证、信息交换等场景中广泛应用。 2.JWT权限认证 2.1添…1.JWT结构 JSON Web TokenJWT是一种用于在网络应用之间安全传输声明的开放标准RFC 7519。它通常由三部分组成以紧凑的字符串形式表示在身份验证、信息交换等场景中广泛应用。 2.JWT权限认证 2.1添加认证服务类 在Program类中添加认证服务、Jwt处理类以及JWT配置项。 // 配置 JWT 身份验证 builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options {options.TokenValidationParameters new TokenValidationParameters{ValidateIssuer true,ValidateAudience true,ValidateLifetime true,ValidateIssuerSigningKey true,ValidIssuer builder.Configuration[JwtOptions:Issuer],ValidAudience builder.Configuration[JwtOptions:Audience],IssuerSigningKey new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration[JwtOptions:SecurityKey]))};});2.2配置认证中间件 当前端发送请求到后端时会通过Authentication中间件解析前端发送过来的Bearer,并把解析的数据填充到HttpContext.User中。 app.UseAuthentication();2.3生成Token public string IssueToken(){var signinCredentials new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtOptions.SecurityKey)), SecurityAlgorithms.HmacSha256);var cls new ListClaim(){new Claim(ClaimTypes.Name, admin),new Claim(org, 001)};var tokeOptions new JwtSecurityToken(issuer: jwtOptions.Issuer,audience: jwtOptions.Audience,claims: cls,expires: DateTime.UtcNow.AddSeconds(6400),signingCredentials: signinCredentials);var token new JwtSecurityTokenHandler().WriteToken(tokeOptions);return token;}2.4 appsettings中jwt配置 JwtOptions: {Issuer: http://localhost,Audience: http://localhost,Expires: 3600,SecurityKey: ThisIsASecretKeyThatIsAtLeast32BytesLongForHS256Algorithm }配置项注入 builder.Services.ConfigureJwtOptions(builder.Configuration.GetSection(JwtOptions));2.5 获取认证信息 如果验证成功就可以从HttContext.User中获取到相关信息。如HttpContext.User.Identity.IsAuthenticated、HttpContext.User.Identity.Name等。 var user HttpContext.User;3.Authentication源代码分析 3.1 JWT认证主要涉及以下类 3.2 业务流程 3.3 业务分析 执行AddJwtBearer(options {…})方法往AuthenticationOptions添加AuthenticationSchemeBuilder。执行AuthenticationMiddleware时先注入IAuthenticationSchemeProvider对象IAuthenticationSchemeProvider会通过注入AuthenticationOptions,生成AuthenticationScheme列表。遍历AuthenticationScheme列表通过IAuthenticationHandlerProvider对象构建IAuthenicationRequestHandler实例。(IAuthenticationHandlerProvider通过注入IAuthenticationSchemeProvider对象根据scheme名称找到AuthneticationScheme实例再找到HandlerType,根据HandlerType生成实例)。调用JwtBearerHandler解析Bearder只要有一个Handler处理成功就结束。 4.授权 4.1授权配置 可以通过配置[Authorize]特性使得方法的调用必须验证授权。 [Authorize]不带任何参数只验证用户是否登录 [Authorize] public IActionResult Privacy()[Authorize(Roles “admin”)]配置角色验证用户是否属于要求的角色。角色是或者的关系只需要满足一个就验证通过。 [Authorize(Roles admin,operate)] public IActionResult Privacy()自定义配置策略 [Authorize(MinimumAgePolicy)] public string Test()// 添加验证策略策略是且的关系必须全部满足才验证通过builder.Services.AddAuthorization(options {options.AddPolicy(MinimumAgePolicy, policy policy.Requirements.Add(new MinimumAgeRequirement(18)));});public class MinimumAgeHandler : AuthorizationHandlerMinimumAgeRequirement{protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, MinimumAgeRequirement requirement){if (context.User.HasClaim(c c.Type ClaimTypes.DateOfBirth)){var dateOfBirth Convert.ToDateTime(context.User.FindFirst(c c.Type ClaimTypes.DateOfBirth).Value);var age DateTime.Today.Year - dateOfBirth.Year;if (dateOfBirth DateTime.Today.AddYears(-age)){age--;}if (age requirement.MinimumAge){context.Succeed(requirement);}}return Task.CompletedTask;}}public class MinimumAgeRequirement : IAuthorizationRequirement{public int MinimumAge { get; set; }public MinimumAgeRequirement(int minimumAge){MinimumAge minimumAge;}}5. Authorization源码分析 5.1类图 5.2代码分析 以下代码在AuthorizationOptions类中添加AuthorizationPolicy,每个AuthorizationPolicy包含多个IAuthorizationRequirement。每个IAuthorizationRequirement代表一个验证项。 builder.Services.AddAuthorization(options {options.AddPolicy(MinimumAgePolicy, policy policy.Requirements.Add(new MinimumAgeRequirement(18)));});注入中间件AuthorizationMiddleware当请求到达时中间件会获取当前EndPoint信息(IAuthorizeData),如根据[Authorize(“MinimumAgePolicy”)]获取AuthorizationPolicy。 获取AuthorizationPolicy会判断是否有配置Roles,如果有配置则会在Policy对象中添加RolesAuthorizationRequirement对象。(policy await AuthorizationPolicy.CombineAsync(_policyProvider, authorizeData, policies) 调用DefaultAuthorizationService,验证AuthorizationPolicy。 DefaultAuthorizationService会获取所有注入的IAuthorizationHandler遍历所有的Handler根据Handler所要求的Requirement从AuthorizationPolicy中获取实例传入Handler中。Handler验证成功会删除对应的Requirement。所有Requirement都删除了才算验证成功。 app.UseAuthorization();针对系统自带Requirement,比如配置Roles添加RolesAuthorizationRequirement对象。在AddAuthorization-AddAuthorizationCore中会注入PassThroughAuthorizationHandler。该Handler会遍历系统自带的Requirement(系统自带的Requirement会继承AuthorizationHandler并实现IAuthorizationRequirement)直接调用HandleAsync方法。 services.TryAddEnumerable(ServiceDescriptor.TransientIAuthorizationHandler, PassThroughAuthorizationHandler());
http://www.w-s-a.com/news/413552/

相关文章:

  • 网站建设费用不用摊销下一页p30
  • 北京 工业网站建设公司国外服务器公司有哪些
  • 怎样局域网站建设盈利网站
  • 公司做网站广告语济南建网站价格消费品展
  • 建德网站网站建设规划设计书
  • 谷歌网站流量分析wordpress置顶浮标
  • 江苏新宁建设集团网站网络规划设计师2023论文
  • 合作建站协议python wordpress采集器
  • 集团网站网页模板网站建设图片大全
  • 举报非法网站要求做笔录wordpress怎么插视频
  • 网站服务器防护如何搭建网站平台
  • 设计师接私活的网站如何做网站的搜索栏
  • ps做图下载网站网站子目录设计
  • 厦门网站制作策划高中生做网站网页
  • 高端品牌网站建设在哪济南兴田德润优惠吗专业定制网站开发公司
  • 怎么做网站卖东西汽车网站排行榜前十名
  • 网站关键字没有排名只有单页面的网站怎么做seo
  • 网站流量盈利模式宝塔没有域名直接做网站怎么弄
  • 淡蓝色网站qq推广中心
  • 设计网站价格餐饮吸引客流的活动方案
  • 手机网站建设电话百度搜索量
  • 条件查询 php网站源码中国白云手机网站建设
  • 网上注册公司流程及材料班级优化大师免费下载电脑版
  • 应用网站如何做营销型网站的重要特点
  • 怎么样百度搜到自己的网站加强社区网站建设
  • 建设网站所需技术wordpress延时加载js
  • 网站建设沈阳搜云seo
  • 怎么申请免费的网站空间微信公众平台注册收费吗
  • 东营网站搭建最基本的网站设计
  • 网站建设技术的发展最近的国际新闻大事