要在Asp.Net Core 3 Web API中实现身份验证,可以按照以下步骤进行操作:
步骤1:在Startup.cs文件中添加所需的依赖项。
首先,确保在Startup.cs文件的ConfigureServices方法中添加以下代码:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidAudience = Configuration["Jwt:Issuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
};
});
步骤2:在Configure方法中启用身份验证。
在Startup.cs文件的Configure方法中,确保添加以下代码:
app.UseAuthentication();
步骤3:生成和验证JWT令牌。
在登录或授权成功后,您可以生成JWT令牌并将其返回给客户端。以下是一个示例方法来生成JWT令牌:
private string GenerateJwtToken(User user)
{
var claims = new List
{
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim(ClaimTypes.Name, user.Username)
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var expires = DateTime.Now.AddDays(Convert.ToDouble(Configuration["Jwt:ExpireDays"]));
var token = new JwtSecurityToken(
Configuration["Jwt:Issuer"],
Configuration["Jwt:Issuer"],
claims,
expires: expires,
signingCredentials: creds
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
步骤4:保护API端点。
要保护需要身份验证的API端点,可以在控制器上添加[Authorize]特性。例如:
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
// API endpoints
}
这将需要在请求时提供有效的JWT令牌。
以上就是在Asp.Net Core 3 Web API中实现身份验证的基本步骤和示例代码。请注意,这只是一个基本示例,您可能需要根据您的项目需求进行调整和扩展。