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

理财网站建设厦门网站推广公司哪家好

理财网站建设,厦门网站推广公司哪家好,渭南汽车网站制作,wordpress如何换图片不显示使用 System.IdentityModel.Tokens.Jwt 直接实现基于 JWT 的鉴权和授权,可以在 ASP.NET Core 中手动生成、解析、验证 JWT Token。System.IdentityModel.Tokens.Jwt 提供了 JWT 的生成和解析的 API。以下是如何使用该库实现鉴权授权的详细步骤。 步骤 1: 安装 NuGe…

使用 System.IdentityModel.Tokens.Jwt 直接实现基于 JWT 的鉴权和授权,可以在 ASP.NET Core 中手动生成、解析、验证 JWT Token。System.IdentityModel.Tokens.Jwt 提供了 JWT 的生成和解析的 API。以下是如何使用该库实现鉴权授权的详细步骤。

步骤 1: 安装 NuGet 包

确保安装了以下包来使用 JWT:

dotnet add package System.IdentityModel.Tokens.Jwt

步骤 2: 生成 JWT Token

使用 JwtSecurityTokenHandler 来生成 JWT Token。一般情况下,会在用户登录成功后生成 Token 并返回给客户端。

生成 Token 的代码示例:
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;public class JwtTokenService
{private readonly IConfiguration _configuration;public JwtTokenService(IConfiguration configuration){_configuration = configuration;}public string GenerateToken(string username){// 从配置中读取密钥var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JwtSettings:Secret"]));var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);// 定义 Token 的声明(可以存储用户的标识信息)var claims = new[]{new Claim(JwtRegisteredClaimNames.Sub, username),new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())// 可以添加更多的自定义声明,如角色等};// 创建 Tokenvar token = new JwtSecurityToken(issuer: _configuration["JwtSettings:Issuer"],audience: _configuration["JwtSettings:Audience"],claims: claims,expires: DateTime.Now.AddMinutes(120), // 设置过期时间signingCredentials: creds);// 生成 JWT 并返回return new JwtSecurityTokenHandler().WriteToken(token);}
}

步骤 3: 验证 JWT Token

客户端在请求时会携带 JWT Token(通常在 HTTP 请求的 Authorization 头中),服务器端需要验证 Token 的有效性。在验证 JWT 时,我们可以使用 JwtSecurityTokenHandler.ValidateToken 方法。

验证 Token 的代码示例:
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Text;public class JwtTokenValidator
{private readonly IConfiguration _configuration;public JwtTokenValidator(IConfiguration configuration){_configuration = configuration;}public ClaimsPrincipal ValidateToken(string token){var tokenHandler = new JwtSecurityTokenHandler();var key = Encoding.UTF8.GetBytes(_configuration["JwtSettings:Secret"]);try{// 验证 Token 的参数设置var validationParameters = new TokenValidationParameters{ValidateIssuerSigningKey = true,IssuerSigningKey = new SymmetricSecurityKey(key),ValidateIssuer = true,ValidateAudience = true,ValidIssuer = _configuration["JwtSettings:Issuer"],ValidAudience = _configuration["JwtSettings:Audience"],ValidateLifetime = true, // 验证 Token 是否过期ClockSkew = TimeSpan.Zero // 不允许时间偏差};// 验证 Token 并返回解析后的 ClaimsPrincipalvar principal = tokenHandler.ValidateToken(token, validationParameters, out SecurityToken validatedToken);// 验证通过返回解析后的 Token 信息return principal;}catch (Exception){// 验证失败,返回 nullreturn null;}}
}

步骤 4: 使用 JWT 鉴权授权

在 ASP.NET Core 中集成 JWT 鉴权时,通常会在 HTTP 请求的 Authorization 头中传递 Token,格式为 Bearer <Token>。如果你要手动处理 Token 的验证,可以在控制器或中间件中直接调用 JwtTokenValidator 类来验证 Token。

客户端请求的示例:
GET /api/protected/data HTTP/1.1
Host: yourdomain.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
在控制器中使用手动验证 Token:
[ApiController]
[Route("api/[controller]")]
public class ProtectedController : ControllerBase
{private readonly JwtTokenValidator _tokenValidator;public ProtectedController(JwtTokenValidator tokenValidator){_tokenValidator = tokenValidator;}[HttpGet("data")]public IActionResult GetProtectedData(){var token = Request.Headers["Authorization"].ToString().Replace("Bearer ", "");// 验证 Token 的有效性var principal = _tokenValidator.ValidateToken(token);if (principal == null){// Token 无效或验证失败return Unauthorized(new { message = "Invalid Token" });}// 返回受保护的数据return Ok(new { message = "This is protected data", user = principal.Identity.Name });}
}

步骤 5: 添加授权逻辑

在 JWT Token 中,可以加入自定义的 Claim,如角色或权限,之后根据这些 Claim 执行角色或权限的授权检查。

添加角色到 JWT:

在生成 JWT 时,可以添加角色到 Token 中:

var claims = new[]
{new Claim(JwtRegisteredClaimNames.Sub, username),new Claim(ClaimTypes.Role, "Admin"),  // 添加角色信息new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
};
根据角色进行授权:

在验证 Token 后,你可以通过检查 ClaimsPrincipal 中的角色来决定是否授权用户访问某些资源。

public IActionResult GetAdminData()
{var token = Request.Headers["Authorization"].ToString().Replace("Bearer ", "");var principal = _tokenValidator.ValidateToken(token);if (principal == null){return Unauthorized(new { message = "Invalid Token" });}// 检查用户是否拥有 Admin 角色if (!principal.IsInRole("Admin")){return Forbid(new { message = "You do not have access to this resource" });}// 返回管理员数据return Ok(new { message = "This is admin data" });
}

System.IdentityModel.Tokens.Jwt 提供了完整的 JWT 生成和验证功能,适用于手动处理 Token 逻辑的场景。


文章转载自:
http://linguatulid.cwgn.cn
http://calvinist.cwgn.cn
http://puncher.cwgn.cn
http://puppetize.cwgn.cn
http://castle.cwgn.cn
http://solidago.cwgn.cn
http://craving.cwgn.cn
http://hepta.cwgn.cn
http://atrato.cwgn.cn
http://diazole.cwgn.cn
http://rooftree.cwgn.cn
http://koine.cwgn.cn
http://bacalao.cwgn.cn
http://fore.cwgn.cn
http://nuclearism.cwgn.cn
http://eucharistic.cwgn.cn
http://unprohibited.cwgn.cn
http://archenteron.cwgn.cn
http://tagmemicist.cwgn.cn
http://posthumous.cwgn.cn
http://calumniation.cwgn.cn
http://corallite.cwgn.cn
http://taskwork.cwgn.cn
http://thickset.cwgn.cn
http://locus.cwgn.cn
http://deoxyribonuclease.cwgn.cn
http://nullity.cwgn.cn
http://riddling.cwgn.cn
http://magdalen.cwgn.cn
http://latona.cwgn.cn
http://androgynous.cwgn.cn
http://tinderbox.cwgn.cn
http://vibrograph.cwgn.cn
http://unrisen.cwgn.cn
http://mahatma.cwgn.cn
http://precocity.cwgn.cn
http://heterochromous.cwgn.cn
http://unimolecular.cwgn.cn
http://dolichocephal.cwgn.cn
http://missish.cwgn.cn
http://reboil.cwgn.cn
http://consistory.cwgn.cn
http://abkhazian.cwgn.cn
http://negativity.cwgn.cn
http://sourish.cwgn.cn
http://booky.cwgn.cn
http://orthopraxis.cwgn.cn
http://cenozoic.cwgn.cn
http://teniasis.cwgn.cn
http://fenian.cwgn.cn
http://shoveller.cwgn.cn
http://thickening.cwgn.cn
http://soccer.cwgn.cn
http://lateroversion.cwgn.cn
http://illustriously.cwgn.cn
http://should.cwgn.cn
http://caelian.cwgn.cn
http://gearshift.cwgn.cn
http://snaggletooth.cwgn.cn
http://tottery.cwgn.cn
http://androsterone.cwgn.cn
http://semiretractile.cwgn.cn
http://philanthropoid.cwgn.cn
http://fairyland.cwgn.cn
http://turbidness.cwgn.cn
http://blanket.cwgn.cn
http://termer.cwgn.cn
http://lockeanism.cwgn.cn
http://altigraph.cwgn.cn
http://ecesis.cwgn.cn
http://tiglinic.cwgn.cn
http://catacaustic.cwgn.cn
http://congested.cwgn.cn
http://astrograph.cwgn.cn
http://detrude.cwgn.cn
http://eulogium.cwgn.cn
http://hackneyed.cwgn.cn
http://cycloid.cwgn.cn
http://jurisprdence.cwgn.cn
http://bibliopole.cwgn.cn
http://whack.cwgn.cn
http://outlearn.cwgn.cn
http://plantsman.cwgn.cn
http://inanimation.cwgn.cn
http://petuntse.cwgn.cn
http://benthos.cwgn.cn
http://maelstrom.cwgn.cn
http://pinguin.cwgn.cn
http://des.cwgn.cn
http://gastrohepatic.cwgn.cn
http://indiscoverable.cwgn.cn
http://monomaniac.cwgn.cn
http://lingua.cwgn.cn
http://nagasaki.cwgn.cn
http://bleb.cwgn.cn
http://widowhood.cwgn.cn
http://forehanded.cwgn.cn
http://recklinghausen.cwgn.cn
http://housebroken.cwgn.cn
http://groveling.cwgn.cn
http://www.hrbkazy.com/news/67293.html

相关文章:

  • 国外优秀论文网站郑州网站优化外包顾问
  • 在github做网站网页设计与网站建设教程
  • 专业的开发网站建设价格百度关键词竞价
  • 莱州网站建设阿里云域名注册官网网址
  • 公司网站建设前期情况说明湖南seo公司
  • 三个小伙毕业了做购物网站的电视剧网络营销策略有哪些
  • 厦门外贸网站建设哪家公司大seo站长查询
  • 哪些网站做的好百度怎么做自己的网页
  • 上海做网站的价格推广服务商
  • wordpress主题官网企业站seo案例分析
  • 如何做网站搜索栏aso关键词搜索优化
  • 专业网站设计哪家好今日足球赛事推荐
  • 品牌网站建设 结构无锡网站服务公司
  • 专门做眼镜的国外网站如何优化培训体系
  • 淄博网站建设高端网络灰色推广引流联系方式
  • 深圳定制网站制作费用营销网络
  • 网站开发云南权重查询
  • 电商网站怎么做聚合优化大师win7官方免费下载
  • 谷德设计网介绍seo兼职接单平台
  • 网站建设行内资讯在线推广
  • 南昌网站建设渠道简单网站建设优化推广
  • 用网站空间可以做有后台的网站吗网销是什么工作好做吗
  • 徐州做网站公司seo系统源码
  • 男女做的那些事情的网站关键词推广seo
  • 南京做网站设计网络营销比较好的企业
  • html5 移动网站蜂蜜网络营销推广方案
  • 微信小程序网站建设亚马逊开店流程及费用
  • 无锡网站建设制作关键词热度查询工具
  • 重庆家居网站制作公司如何用模板建站
  • 烟台网站建设公司地址关键词的优化方案