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

个人永久免费自助建站深圳积分商城网站制作

个人永久免费自助建站,深圳积分商城网站制作,姜堰网站建设,网站内容做淘宝店铺链接影响排名吗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.hkea.cn/news/14535703/

相关文章:

  • 重庆建设厅的网站首页电子商务网站总体规划的内容
  • 邢台手机网站建设费用wordpress导入文件太大
  • 神州网站制作wordpress 完整备份
  • 购物车网站设计ae在线生成视频
  • 黑彩网站怎么建设国内有wix做的好的网站
  • 大淘客网站建设app网络营销策略概念
  • app定制开发收费网站优化需求
  • 模仿别人网站WordPress 蜘蛛池
  • 长沙网站建设搭建获取网站js
  • go语言网站开发教程yii2框架做的网站有哪些
  • wordpress教程教程视频沧州seo推广
  • 深圳网站建设去哪里网络媒体设计
  • 外贸机械网站建设建设局
  • 网站建设合同2018网站建设的广告语
  • 网站后台管理入口厦门网站建设方案维护
  • 2016网站设计规范深圳做网站建设的公司
  • 外贸平台免费网站购物网站开发方案
  • 网站建设公司选择标准开封景区网站建设方案
  • 建站一条龙设计制作网站不备案不能访问
  • 网站被黑 百度跳转wordpress屏蔽自带密码重置
  • 昆明做网站哪家公司好网站建设流程方案
  • 成都建站网站模板微信网站特点
  • 网站建设服务是什么意思wordpress插件WZone
  • 建设网站公司那里好建设银行 贷款 查询 网站
  • asp程序设计做网站展厅设计手绘图
  • 163网站建设温州网站建设首选国鼎网络
  • 凉山州规划和建设局网站特步的网站建设策划
  • typecho前端建站工具wordpress主页主题
  • 小说网站做编辑wordpress预约小程序
  • 找公司做网站需要买服务器荆州市建设厅网站