ZBLOG

.net Standard 用 jwt 生成 token 加密 和 解密 的代码

以下是使用 .NET Standard 和 JWT 生成和解密令牌的代码示例:

生成JWT Token:

using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using Microsoft.IdentityModel.Tokens;

public static string GenerateToken(string secretKey, string issuer, string audience)
{
    var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey));
    var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

    var claims = new[] {
        new Claim(ClaimTypes.NameIdentifier, "1234"),
        new Claim(ClaimTypes.Role, "Admin")
    };

    var token = new JwtSecurityToken(
        issuer: issuer,
        audience: audience,
        claims: claims,
        expires: DateTime.UtcNow.AddDays(7),
        signingCredentials: credentials
    );

    return new JwtSecurityTokenHandler().WriteToken(token);
}

解密JWT Token:

using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using Microsoft.IdentityModel.Tokens;

public static ClaimsPrincipal ValidateToken(string token, string secretKey, string issuer, string audience)
{
    var validationParameters = new TokenValidationParameters
    {
        ValidateIssuerSigningKey = true,
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)),
        ValidateIssuer = true,
        ValidIssuer = issuer,
        ValidateAudience = true,
        ValidAudience = audience,
        ValidateLifetime = true,
    };

    var handler = new JwtSecurityTokenHandler();
    ClaimsPrincipal principal;

    try
    {
       principal= handler.ValidateToken(token, validationParameters, out _);
       
       // You can access the claims of the token using:
       //principal.Claims

       return principal;
   }
   catch (Exception ex)
   {
       // Token validation failed
       return null;
   }
}

请注意,要使用 JWT 进行身份验证,您需要安全地存储密钥和其他敏感信息,并仅将加密的 token 发送到客户端。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=5825

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?