提问者:小点点

在C#中创建和验证JWT令牌。NET


我正在使用C#asp.net我想为我的网页使用jwt令牌。所以每当页面加载时,我必须使用jwt,我是初学者,所以我没有太多的想法,我知道它是如何工作的,但我不知道从哪里开始或如何准确地实现。我有一个登录页面,我只需要jwt用于“在线id/admin/username”。使用这些SymmetricSecurityKey SigningCretials JwtHeader JwtPayload JwtSecurityToken JwtSecurityTokenHandler WriteToken var token=handler. ReadJwtToken(token enString);谷歌搜索给出了我的.net core结果,这不是我想要的,有人能帮我吗?谢谢

我尝试了一些代码片段,但我确定我的方法不对


共1个答案

匿名用户

要使用JWT进行身份验证,您必须首先注册用户并将其存储在数据库中。登录并使用数据库信息验证用户时,请使用以下代码创建JWT令牌。

    public static string GenerateJwtToken()
    {
        DateTime value = DateTime.Now.AddMinutes(20.0);
        byte[] bytes = Encoding.ASCII.GetBytes("MIIBrTCCAaGg ...");
        SigningCredentials signingCredentials = new SigningCredentials(new SymmetricSecurityKey(bytes), "http://www.w3.org/2001/04/xmldsig-more#hmac-sha256");
        SecurityTokenDescriptor tokenDescriptor = new SecurityTokenDescriptor
        {
            Expires = value,
            SigningCredentials = signingCredentials
        };
        JwtSecurityTokenHandler jwtSecurityTokenHandler = new JwtSecurityTokenHandler();
        SecurityToken token = jwtSecurityTokenHandler.CreateToken(tokenDescriptor);
        return jwtSecurityTokenHandler.WriteToken(token);
    }

然后,在具有Authorize属性的操作中,您必须在请求标头中发送上面创建的令牌。

[HttpPost]
[Authorize]
public async Task<IActionResult> Test(TestRequest input)
{
    .
    .
    .
}

我写了一个简单的例子,你可以从这个链接中看到JWT的完整实现示例