当前位置 : 主页 > 网络编程 > net编程 >

.net core 6.0 jwt token设置有效期

来源:互联网 收集:自由互联 发布时间:2023-08-25
.NET Core 6.0 JWT Token 设置有效期 简介 在 .NET Core 6.0 中,JSON Web Token(JWT)是一种常用的身份验证和授权机制。JWT 是一种基于 token 的认证方式,它由三部分组成:头部、负载和签名。其中

.NET Core 6.0 JWT Token 设置有效期

简介

在 .NET Core 6.0 中,JSON Web Token(JWT)是一种常用的身份验证和授权机制。JWT 是一种基于 token 的认证方式,它由三部分组成:头部、负载和签名。其中,负载部分包含了一些有关用户的信息,比如用户 ID、角色等。在使用 JWT 进行身份认证时,我们需要为 JWT 设置有效期,以保证安全性。

本文将介绍在 .NET Core 6.0 中如何设置 JWT Token 的有效期,包括整个流程、每一步需要做什么以及需要使用的代码。

流程概述

下面是设置 JWT Token 有效期的流程概述:

步骤 描述 1. 定义 Token 配置 在应用程序的配置文件中定义 Token 的相关配置,包括有效期等。 2. 生成 Token 在用户登录成功后,根据用户信息生成 JWT Token。 3. 设置有效期 为生成的 Token 设置有效期。 4. 验证 Token 在接收到请求时,验证 Token 的有效性。

接下来,我们将详细介绍每一步所需的具体操作和代码。

步骤一:定义 Token 配置

首先,我们需要在应用程序的配置文件中定义 JWT Token 的相关配置。在 appsettings.json 文件(或 appsettings.Development.json 文件)中添加以下配置:

{
  "JwtSettings": {
    "SecretKey": "your-secret-key",
    "Issuer": "your-issuer",
    "Audience": "your-audience",
    "ExpirationMinutes": 30
  }
}
  • SecretKey:用于加密和解密 Token 的密钥,可以是一个随机生成的字符串。
  • Issuer:发行者的名称,用于识别发行者。
  • Audience:接收者的名称,用于识别接收者。
  • ExpirationMinutes:Token 的有效期,单位为分钟。

步骤二:生成 Token

在用户登录成功后,我们需要根据用户信息生成 JWT Token。以下是生成 Token 的代码示例:

using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Microsoft.Extensions.Configuration;
using Microsoft.IdentityModel.Tokens;

public class TokenService
{
    private readonly IConfiguration _config;

    public TokenService(IConfiguration config)
    {
        _config = config;
    }

    public string GenerateToken(User user)
    {
        var tokenHandler = new JwtSecurityTokenHandler();
        var key = Encoding.ASCII.GetBytes(_config["JwtSettings:SecretKey"]);
        var tokenDescriptor = new SecurityTokenDescriptor
        {
            Subject = new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                new Claim(ClaimTypes.Name, user.Username)
            }),
            Expires = DateTime.UtcNow.AddMinutes(int.Parse(_config["JwtSettings:ExpirationMinutes"])),
            Issuer = _config["JwtSettings:Issuer"],
            Audience = _config["JwtSettings:Audience"],
            SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
        };
        var token = tokenHandler.CreateToken(tokenDescriptor);
        return tokenHandler.WriteToken(token);
    }
}

在上述代码中,我们使用了 JwtSecurityTokenHandler 类来生成 JWT Token。其中,SecurityTokenDescriptor 类用于设置 Token 的各种属性,包括过期时间、发行者、接收者等。注意,在设置过期时间时,我们使用了配置文件中定义的 ExpirationMinutes 值。

步骤三:设置有效期

为生成的 Token 设置有效期是保证安全性的重要步骤。在上述的代码示例中,我们已经为 Token 设置了过期时间,即 Expires 属性。

步骤四:验证 Token

在接收到请求时,我们需要验证 Token 的有效性。以下是验证 Token 的代码示例:

using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.IdentityModel.Tokens;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // ...

        var key = Encoding.ASCII.GetBytes(Configuration["JwtSettings:SecretKey"]);
        services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidateAudience = true,
                    ValidateLifetime = true
【文章转自 盐城网页制作公司 http://www.1234xp.com/yancheng.html 处的文章,转载请说明出处】
上一篇:.NET Core mvc视图里面如何注入[RazorInject]
下一篇:没有了
网友评论