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

如何做古诗词网站温州网站建设(首选国鼎网络)

如何做古诗词网站,温州网站建设(首选国鼎网络),欧美网站风格,支付网站招聘费分录怎么做构建一个包含 JWT(JSON Web Token)鉴权的 Web API 是一种常见的做法,用于保护 API 端点并验证用户身份。以下是一个基于 ASP.NET Core 的完整示例,展示如何实现 JWT 鉴权。 1. 创建 ASP.NET Core Web API 项目 使用 .NET CLI 或 …

构建一个包含 JWT(JSON Web Token)鉴权的 Web API 是一种常见的做法,用于保护 API 端点并验证用户身份。以下是一个基于 ASP.NET Core 的完整示例,展示如何实现 JWT 鉴权。


1. 创建 ASP.NET Core Web API 项目

使用 .NET CLI 或 Visual Studio 创建一个新的 Web API 项目:

dotnet new webapi -n JwtAuthApi
cd JwtAuthApi

2. 安装必要的 NuGet 包

确保安装了以下包(通常默认已包含):

  • Microsoft.AspNetCore.Authentication.JwtBearer
  • Microsoft.IdentityModel.Tokens
  • System.IdentityModel.Tokens.Jwt

如果未安装,可以运行以下命令:

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer

3. 配置 JWT 鉴权

(1) 修改 appsettings.json

appsettings.json 中添加 JWT 配置:

{"Jwt": {"Key": "YourSecretKeyForJwtAuthentication", // 用于签名的密钥"Issuer": "YourIssuer",                    // 发行者"Audience": "YourAudience"                 // 受众},"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"AllowedHosts": "*"
}
(2) 配置服务 (Program.cs)

Program.cs 中配置 JWT 鉴权服务:

using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using System.Text;var builder = WebApplication.CreateBuilder(args);// 添加 JWT 鉴权
var jwtSettings = builder.Configuration.GetSection("Jwt");
var key = Encoding.ASCII.GetBytes(jwtSettings["Key"]);builder.Services.AddAuthentication(options =>
{options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{options.TokenValidationParameters = new TokenValidationParameters{ValidateIssuer = true,ValidateAudience = true,ValidateLifetime = true,ValidateIssuerSigningKey = true,ValidIssuer = jwtSettings["Issuer"],ValidAudience = jwtSettings["Audience"],IssuerSigningKey = new SymmetricSecurityKey(key)};
});builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();var app = builder.Build();if (app.Environment.IsDevelopment())
{app.UseSwagger();app.UseSwaggerUI();
}app.UseHttpsRedirection();// 使用鉴权中间件
app.UseAuthentication();
app.UseAuthorization();app.MapControllers();app.Run();

4. 创建用户登录和生成 JWT 的逻辑

(1) 创建模型类

创建一个简单的用户模型和返回的响应模型:

public class UserModel
{public string Username { get; set; }public string Password { get; set; }
}public class AuthResponse
{public string Token { get; set; }public DateTime Expiration { get; set; }
}
(2) 创建生成 JWT 的方法

Controllers/AuthController.cs 中实现登录和生成 JWT 的逻辑:

using Microsoft.AspNetCore.Mvc;
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;[ApiController]
[Route("api/[controller]")]
public class AuthController : ControllerBase
{private readonly IConfiguration _configuration;public AuthController(IConfiguration configuration){_configuration = configuration;}[HttpPost("login")]public IActionResult Login([FromBody] UserModel user){// 模拟用户验证(实际应从数据库中验证)if (user.Username == "admin" && user.Password == "password"){var token = GenerateJwtToken(user.Username);return Ok(new AuthResponse{Token = token,Expiration = DateTime.UtcNow.AddMinutes(30) // 设置过期时间});}return Unauthorized(new { message = "Invalid username or password" });}private string GenerateJwtToken(string username){var jwtSettings = _configuration.GetSection("Jwt");var key = Encoding.ASCII.GetBytes(jwtSettings["Key"]);var tokenDescriptor = new SecurityTokenDescriptor{Subject = new ClaimsIdentity(new[]{new Claim(ClaimTypes.Name, username),new Claim(ClaimTypes.Role, "Admin") // 示例角色}),Expires = DateTime.UtcNow.AddMinutes(30), // 设置过期时间Issuer = jwtSettings["Issuer"],Audience = jwtSettings["Audience"],SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key),SecurityAlgorithms.HmacSha256Signature)};var tokenHandler = new JwtSecurityTokenHandler();var securityToken = tokenHandler.CreateToken(tokenDescriptor);return tokenHandler.WriteToken(securityToken);}
}

5. 创建受保护的 API 端点

(1) 创建一个受保护的控制器

Controllers/SecureController.cs 中创建一个需要 JWT 鉴权的端点:

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;[ApiController]
[Route("api/[controller]")]
[Authorize] // 要求鉴权
public class SecureController : ControllerBase
{[HttpGet]public IActionResult Get(){var username = User.Identity.Name;return Ok(new { message = $"Hello, {username}! This is a secure endpoint." });}
}

6. 测试 API

(1) 登录获取 JWT

发送 POST 请求到 /api/auth/login,请求体如下:

{"username": "admin","password": "password"
}

响应会返回一个 JWT Token。

(2) 访问受保护的端点

将获取到的 Token 添加到请求头中,格式为:

Authorization: Bearer <JWT_TOKEN>

然后访问 /api/secure,你将看到受保护的响应。


总结

通过以上步骤,我们实现了一个包含 JWT 鉴权的 Web API。这个示例展示了如何生成 JWT、验证 JWT,以及如何保护 API 端点。你可以根据实际需求扩展功能,例如从数据库验证用户、支持角色权限等。


文章转载自:

http://bC7oER0o.sbjbs.cn
http://CrrdFGTv.sbjbs.cn
http://y55PU0iu.sbjbs.cn
http://MD762eCR.sbjbs.cn
http://KfatFDoZ.sbjbs.cn
http://oFTRc8S0.sbjbs.cn
http://MJsTs8Tx.sbjbs.cn
http://BtmdQlwV.sbjbs.cn
http://gA5n7WG7.sbjbs.cn
http://MLEdPket.sbjbs.cn
http://TwoG3z9Z.sbjbs.cn
http://dIZxYAjN.sbjbs.cn
http://nigLA6Me.sbjbs.cn
http://iBBKhNdy.sbjbs.cn
http://P8Ft6Xtn.sbjbs.cn
http://U6EGEDTv.sbjbs.cn
http://26UfDsa2.sbjbs.cn
http://ddTUGmBs.sbjbs.cn
http://y1C7Z6rl.sbjbs.cn
http://x12dOgVQ.sbjbs.cn
http://5JcMvvBg.sbjbs.cn
http://orOLyowR.sbjbs.cn
http://W7GsjeXB.sbjbs.cn
http://v3EKKmYR.sbjbs.cn
http://7rhd3HNJ.sbjbs.cn
http://6HCW5k7t.sbjbs.cn
http://E6iA3WBo.sbjbs.cn
http://lkDkL4zX.sbjbs.cn
http://4uY9riMk.sbjbs.cn
http://dOxOUraK.sbjbs.cn
http://www.dtcms.com/wzjs/735370.html

相关文章:

  • 车都建设投资集团网站电商运营培训正规平台
  • 科讯cms怎么做网站地图免费精品网站模板
  • 新手学做网站能打开任何网站浏览器下载
  • 专业网站运营托管网站做哪些主题比较容易做
  • 贵港市建设局网站做网站可以用什么数据库
  • h5和网站的区别工程公司的经营范围
  • 房产网站制作找哪家商务网站建设的基本步骤
  • 手机社区网站模板大连招标投标信息网
  • 网站建设 目标简单库存管理免费软件
  • 承接网站开发 app开发网站建设服务合同书
  • 福州免费企业建站网站域名解析ip地址
  • 商田科技网站简单百度网址大全
  • 专业做二手房的网站兼职做网站这样的网站
  • 电脑和手机都能浏览的网站开发搜索引擎营销的英文简称
  • 网站备案中打不开电子商务网站开发的历程
  • 江苏省住房和城乡建设网站seo怎么才能优化好
  • 简述电子商务网站的开发流程东莞企业如何建网站
  • 建立什么网站it需要什么学历
  • 南京网站推广营销公司哪家好成都好玩的地方
  • 网站和网址有什么不同网络营销的含义和特点
  • 网站开发违约责任怎么查询域名是否备案
  • 网站代码模板免费网站关键词优化费用
  • 网站建设方案平台选择网站建设丿选择金手指排名15
  • 深圳网站制作工具百事可乐网站建设优缺点
  • 网站新闻不收录搬瓦工做网站稳定吗
  • 怎么做网站填内容如何做网站跳转登入
  • 微信手机网站源码深圳品牌馆设计装修公司
  • 仙桃做网站找谁天津百度爱采购
  • 自主网站建站网络广告例子
  • 泗泾做网站公司wordpress进不到后台