首页 > 编程语言 > ASP.NET Web API 实现 Token 验证代码

ASP.NET Web API 实现 Token 验证代码

时间:2023-03-22 22:33:59浏览次数:41  
标签:返回 Web ASP token Token API user new

public class TokenController : ApiController // 定义一个名为 TokenController 的类,继承自 ApiController 类。
{
    [HttpPost] // 使用 HTTP POST 请求方式。
    public HttpResponseMessage Login(User user) // 定义一个名为 Login 的方法,它接受一个 User 对象作为参数,并返回一个 HttpResponseMessage 对象。
    {
        if (user == null) // 如果 user 参数为空,则抛出一个 HTTP 响应异常(状态码为 400)。
        {
            throw new HttpResponseException(HttpStatusCode.BadRequest);
        }

        if (IsValid(user)) // 如果 IsValid 方法返回 true,则调用 TokenGenerator 类的 GenerateTokenJwt 方法生成一个 token,并将其作为 HTTP 响应正文返回给客户端。否则,返回一个 HTTP 响应异常(状态码为 401)。
        {
            var token = TokenGenerator.GenerateTokenJwt(user.Username);
            return Request.CreateResponse(HttpStatusCode.OK, token);
        }
        else
        {
            return Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Invalid username or password.");
        }
    }

    private bool IsValid(User user) // IsValid 方法用于验证用户是否有效。在这个示例中,该方法始终返回 true。
    {
        // TODO: Check if the user is valid
        return true;
    }
}

public static class TokenGenerator // 定义一个名为 TokenGenerator 的静态类。
{
    public static string GenerateTokenJwt(string username) // 定义一个名为 GenerateTokenJwt 的静态方法,它接受一个字符串类型的参数 username,并返回一个字符串类型的 token。
    {
        var securityKey = new SymmetricSecurityKey(Encoding.Default.GetBytes("your custom Security Key phrase")); // 创建一个 SymmetricSecurityKey 对象,它使用指定的字符串作为密钥。
        var signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature); // 创建一个 SigningCredentials 对象,它使用指定的 SymmetricSecurityKey 对象和 HmacSha256Signature 签名算法。

        var claims = new[] // 创建一个 Claim 数组,
        {
            new Claim(JwtRegisteredClaimNames.Sub, username), // 包含用户名称的声明。
            new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), // 包含唯一标识符的声明。
        };

        var token = new JwtSecurityToken( // 创建一个 JwtSecurityToken 对象,它包含要包含在 token 中的声明、签名凭据和其他选项。
            issuer: "yourdomain.com", // 发行者名称。
            audience: "yourdomain.com", // 接收者名称。
            claims: claims, // 包含要包含在 token 中的声明的数组。
            expires: DateTime.UtcNow.AddDays(1), // token 的过期时间。
            signingCredentials: signingCredentials); // 用于签名 token 的凭据。

        return new JwtSecurityTokenHandler().WriteToken(token); // 将 JwtSecurityToken 对象转换为字符串类型的 token 并返回该字符串。
    }
}


这个示例代码使用了 JWT(JSON Web Token)来生成 token。在这个示例中,Web API 会在用户登录时生成一个 token 并将其返回给客户端。客户端可以将这个 token 存储在本地,并在每次请求时将其发送到 Web API。Web API 可以使用这个 token 来验证用户身份并返回相应的数据。

标签:返回,Web,ASP,token,Token,API,user,new
From: https://www.cnblogs.com/xiangshifu/p/17245746.html

相关文章

  • 【Javaweb】html frame标签的使用 | 导航栏右侧内容的实现
    问题的产生:是我和同伴做了一个导航栏,但是我们不知道怎么实现右侧内容的切换    然后我们查了很多资料,但是有一些是垂直的,但是就如图可见,我们是水平的,那么怎么实......
  • 《渗透测试》WEB攻防-ASP安全&MDB下载植入&IIS短文件名&写权限&解析 2022 Day18
    1  ➢ ASP-数据库-MDB默认下载➢ ASP-数据库-ASP后门植入连接➢ ASP-中间件-IIS短文件名探针-安全漏洞➢ ASP-中间件-IIS文件上传解析-安全漏洞➢ ASP-中......
  • Webpack基础学习(一) (未完结)
    一、Webpack介绍与基本使用1.1、Webpack是什么?Webpack是一个静态资源打包工具。它会以一个或多个文件作为打包的入口,将我们整个项目所有文件编译组合成一个或多个文件......
  • Python 四大主流 Web 编程框架
    目前Python的网络编程框架已经多达几十个,逐个学习它们显然不现实。但这些框架在系统架构和运行环境中有很多共通之处,本文带领读者学习基于Python网络框架开发的常用知识,及......
  • 【web 开发基础】PHP 快速入门(8)-PHP 运算符之逻辑运算符详解
    前言PHP开发基础开速入门系列目录:《​【web开发基础】php开发基础快速入门(1)-PHP介绍及开发环境快速安装和基本使用介绍​》《​【web开发基础】php开发基础快速入......
  • GitWeb
    GitWeb现在我们的项目已经有了可读可写和只读的连接方式,不过如果能有一个简单的web界面访问就更好了。Git自带一个叫做GitWeb的CGI脚本,运行效果可以到​​http://gi......
  • ASP.NET Core API模型绑定和Action数据返回格式
    参考文档:https://www.cnblogs.com/FlyLolo/p/ASPNETCore2_20.html模型绑定[FromQuery]-从URL中取值。[FromRoute]-从路由中取值。[FromForm]-从表单中取值。Pos......
  • ASP.NET Core 诊断工具
    .NETCore诊断全局工具.NETCore诊断工具官方地址dotnet-countersdotnet-counters是一个性能监视工具,用于初级运行状况监视和性能调查。它通过EventCounterAPI观......
  • webrtc QOS笔记三 RTT计算,SRS增加XR
    webrtcQOS笔记三RTT计算,SRS增加XRRTT计算方式WebRTC中目前有两种方式计算RTT:基于媒体流发送端的计算(默认开启)。通过SenderReport(SR)与ReceiverReport(RR)携带的信息......
  • WebSocket通讯框架 jWebSocket
    jWebSocket提供用来创建基于HTML5的Web流通讯的应用框架。HTML5WebSockets将替换现有的XHR应用和Comet服务,通过一个灵活高速双向的TCPsocket通讯技术。jWebSo......