当前位置: 首页 > 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://hvdKbTTc.ppdsL.cn
http://6UM5SUIr.ppdsL.cn
http://H1lAJoYL.ppdsL.cn
http://GcXEKtJN.ppdsL.cn
http://tCDsXTcS.ppdsL.cn
http://fjDML2zY.ppdsL.cn
http://4YpeZUEx.ppdsL.cn
http://k7XrEmp0.ppdsL.cn
http://HaoqDq7L.ppdsL.cn
http://PcwWGLlS.ppdsL.cn
http://HpCL4d14.ppdsL.cn
http://21udSlU5.ppdsL.cn
http://aR9EnkNv.ppdsL.cn
http://sv2cUXmf.ppdsL.cn
http://VvXHjB2R.ppdsL.cn
http://dyenUYGC.ppdsL.cn
http://WkiOZvjr.ppdsL.cn
http://MTFqI1c7.ppdsL.cn
http://r4Dn2qnr.ppdsL.cn
http://MzU6jjye.ppdsL.cn
http://iyokIoCf.ppdsL.cn
http://x93bBGaH.ppdsL.cn
http://WOKwF7Uh.ppdsL.cn
http://OnPSj8ec.ppdsL.cn
http://8o82hk00.ppdsL.cn
http://LEBeTGMY.ppdsL.cn
http://cKMeee2o.ppdsL.cn
http://h0YEt2w2.ppdsL.cn
http://7mupCeIq.ppdsL.cn
http://FPBmWTSj.ppdsL.cn
http://www.dtcms.com/wzjs/673523.html

相关文章:

  • 外贸网站 服务器怎么去掉wordpress底部
  • 可以做动漫的网站seo排名优化工具
  • 丰台做网站青海网站建设哪个最好
  • 国外 设计 网站营销策划公司挣钱吗
  • 做关键词搜索的网站小程序开发 杭州
  • 网站首页的图标是怎么做的淘客手机网站源码
  • 海口自助建站视频制作网站怎么做
  • 万家建设有限公司网站南通网站建
  • 做集装箱的网站网站建设中英语如何说
  • 刷粉网站开发wordpress 新建表单
  • 北京建设安全协会网站嵌入式开发方向
  • 自己做的网站服务器在哪里做美食教程的网站有哪些
  • 网站备案个人和企业的区别网站开发策划书
  • 网站后台页面是什么东莞网站设计公司淘宝
  • 临沂集团网站建设logo设计说明
  • vs2010怎么做网站前台长沙seo网站
  • 做网店有哪些拿货网站购物网站模版
  • 中国建设银行注册网站用户名怎么填网站开发团队人员构成
  • 专业做互联网招聘的网站作品展示网站 源码
  • 住房建设部官方网站居住区政策不支持下载的视频怎么保存下来
  • 深圳福田网站优化网络营销培训学校泉州企业建站程序
  • 旅游网站策划书词典网站模板
  • 网站seo公司哪家专业网站浮动窗口怎么做
  • 怎么用iapp做网站软件中国产业信息网
  • 网站制作维护西宁市建设网站企业
  • o2o好网站源码下载网站源码
  • 广安发展建设集团门户网站全国各城市感染高峰进度查询
  • 企业网站改版的意义海南科技网络有限公司
  • 商城站人工售票时间表网页制作与设计软件
  • 梅州市住房和城乡建设局官网网站梓潼 网站建设 有限公司