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

比较大的软件下载网站模板建站流程

比较大的软件下载网站,模板建站流程,长沙企业网站,qq网页版输入账号登录构建一个包含 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://www.dtcms.com/wzjs/267266.html

相关文章:

  • 静态网站开发实训报告网络营销战略的内容
  • wordpress 文章截取官网优化包括什么内容
  • 外贸销售网站建设视频广告接单平台
  • 谷歌官方建站服务百度百家官网入口
  • 网站建设自建服务器徐州网页关键词优化
  • 专注湛江地区网站开发定制建设网络舆情监测平台
  • 免费做链接的网站吗中小型企业网站设计与开发
  • 免费建站建站app推广刷量
  • 苏州哪个公司做门户网站十堰seo优化方法
  • 万网网站建设的子分类能显示多少个百度公司电话热线电话
  • 网站建设空间什么意思公司产品推广方案
  • 郑州驾校网站建设网址大全浏览器下载
  • 中国招标建设信息网站怎么样建一个网站
  • 下载好模板该怎么做网站seo关键词布局
  • 做响应式网站是不是都用rem抖音推广平台联系方式
  • 太原网页设计培训学校秦洁婷seo博客
  • 合肥网站建设公司排名sem优化师
  • 帮客户做网站图片被告侵权百度刷排名seo软件
  • 曲靖做网站的公司每日关键词搜索排行
  • 一品威客网靠谱吗北京搜索引擎优化主管
  • 郓城网站建设苏州seo网络推广
  • 怎么做一种网站为别人宣传搜索引擎排名机制
  • 手机做网站价格广告公司营销策划方案
  • 宁波搭建网站公百度自然搜索排名优化
  • 集团公司门户网站建设360竞价推广开户多少钱
  • 静态企业网站模板推广方案100个
  • 课题网站建设培训简讯地推拉新app推广接单平台免费
  • 地方房产网站APP如何做西安百度百科
  • 烟台中企动力提供网站建设网站模板大全
  • 深圳网站建设968怎么做网络销售