请参考以下示例代码,演示了如何使用ASP .NET Web API创建和验证PASETO令牌:
首先,您需要安装System.IdentityModel.Tokens.Paseto
NuGet包,以便使用PASETO令牌的功能。
创建一个名为TokenService.cs
的类,用于处理令牌的生成和验证:
using System;
using System.IdentityModel.Tokens.Paseto;
using System.Security.Claims;
using System.Text;
namespace YourNamespace
{
public class TokenService
{
private readonly PasetoTokenHandler _tokenHandler;
public TokenService(string secretKey)
{
_tokenHandler = new PasetoTokenHandler(secretKey);
}
public string GenerateToken(string userId)
{
var claims = new[]
{
new Claim("sub", userId),
new Claim("exp", DateTimeOffset.UtcNow.AddMinutes(30).ToUnixTimeSeconds().ToString())
};
var token = _tokenHandler.CreateToken(claims);
return _tokenHandler.WriteToken(token);
}
public bool ValidateToken(string token)
{
try
{
var principal = _tokenHandler.ValidateToken(token);
return true;
}
catch (Exception)
{
return false;
}
}
}
}
然后,在您的控制器中,您可以使用TokenService
类来生成和验证PASETO令牌:
using System.Web.Http;
namespace YourNamespace
{
public class TokenController : ApiController
{
private readonly TokenService _tokenService;
public TokenController()
{
_tokenService = new TokenService("your-secret-key");
}
[HttpGet]
public IHttpActionResult GenerateToken(string userId)
{
var token = _tokenService.GenerateToken(userId);
return Ok(token);
}
[HttpGet]
public IHttpActionResult ValidateToken(string token)
{
var isValid = _tokenService.ValidateToken(token);
return Ok(isValid);
}
}
}
在上面的代码中,GenerateToken
方法接受一个用户ID,并使用TokenService
类生成PASETO令牌。ValidateToken
方法接受一个令牌,并使用TokenService
类验证该令牌的有效性。
请注意,上述代码中的your-secret-key
应替换为您自己的密钥。确保保护密钥的安全性,并不要将其直接硬编码在代码中。
这只是一个简单的示例,您可以根据您的实际需求进行扩展和修改。