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

建造网站的软件景区网站建设

建造网站的软件,景区网站建设,网址域名注册申请,中煤地建设有限公司网站使用 System.IdentityModel.Tokens.Jwt 直接实现基于 JWT 的鉴权和授权#xff0c;可以在 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://www.dnsts.com.cn/news/161061.html

相关文章:

  • 建设银行e路通网站阿里云个人网站备案过程全记录
  • 300元做网站德阳建设公司网站
  • 福州做网站费用软件开发做平台
  • 重庆市教育考试院门户网站扁平化网站设计
  • 私人做医院的网站西部网站助手
  • 建设网站要求代理企业网站备案
  • 台州网站设计哪家好网站建设软件dw
  • 电商网站文档广东智能网站建设费用
  • 网站后台功能模块荷塘网站建设
  • 做教育培训网站公司广东购物网站建设哪家好
  • 网站如何制作多少钱怎么查看网站的dns
  • 品牌网站设计公司哪家好南阳做网站价格
  • 免费行情软件app网站大全网站搜索栏怎么做
  • 网址导航网站建站网站空间续费
  • 太原网站排名以客为尊深圳网站优化包年
  • 漳州优化网站建设西坝河网站建设
  • h5商城网站 源代码网络营销策划案框架
  • 深圳广告设计公司网站网站策划的重要性
  • 东莞网站优化是什么网站开发html php
  • 微信网站建设塞尼铁克j昆明网站制作公司
  • 违法网站开发人员代码外包平台
  • app网页设计网站全球软件公司排行榜
  • 网站托管服务适合安徽省建设质量安全协会网站
  • 如何增加网站会员现在有什么网络游戏好玩
  • 做电商网站微信号是多少磁力猫引擎
  • 学校网站建设意义有哪些方面企业网站建设方案市场
  • aspx网站开发教程国内互联网公司排名2021
  • 成都建工路桥建设有限公司网站谷歌seo是什么
  • 西安自助建站公司做网站大概价格
  • 装潢公司网站设计与制作网站如何管理