C# 生成JWT的Token

using JWT.Algorithms;
using JWT;
using JWT.Serializers;

private string GetToken(string timeStamp, string deptName, string doctorName, string idNo)
        {
            string token = string.Empty;
            string appID = config.AppID;
            string secretKey = config.AppSecret;
            //十分钟有效期
            long expTimeStamp = Convert.ToInt64(timeStamp) + 600000;

            //载荷
            var payload = new Dictionary<string, object>
            {
                { "jti",config.AppID},
                { "name", config.AppName },
                { "orgName",config.HospitalName},
                { "deptName",deptName},
                { "doctorName",doctorName},
                { "idNo",idNo},
                { "idNoType","01"},
                //生效时间
                { "nbf", timeStamp },
                //过期时间
                { "exp", expTimeStamp.ToString() },
                //颁发时间
                { "iat", timeStamp}
            };

            StringBuilder builder = new StringBuilder();
            foreach (var value in payload)
            {
                builder.Append(value.Key);
                builder.Append(":");
                builder.Append(value.Value);
                builder.Append("  ");
            }
            string logPayLoad = builder.ToString();
            LoggerSimple.WriteInfo($"载荷:{logPayLoad}");

            //HMACSHA256加密
            IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
            //序列化和反序列
            IJsonSerializer serializer = new JsonNetSerializer();
            //Base64编解码
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
            //编码成JWT令牌
            token = encoder.Encode(payload, secretKey);
            LoggerSimple.WriteInfo($"生成token:{token}");
            return token;
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C# token 存在服务器的 Token 中,可以采用以下方式: 1. 在服务器端使用 JWT(JSON Web Token)来生成和验证 TokenJWT 由三部分组成:头部、载荷和签名。其中,载荷部分可以存储用户的信息,例如用户名、角色、过期时间等。 2. 在客户端登录成功后,将用户信息和其它必要信息通过 HTTPS 协议传输到服务器端,并由服务器端生成 Token 并返回给客户端。 3. 客户端在后续与服务器进行通信的过程中,需要在请求头中添加 Token,以便服务器端能够验证用户的身份。服务器端可以从 Token 中解析出用户信息,并根据信息判断用户是否有权限进行某个操作。 4. 如果 Token 过期或者被篡改,服务器端会拒绝请求,并要求客户端重新登录获取新的 Token。 总之,服务器端需要对 Token 进行严格的管理和验证,以确保用户的身份得到有效的保护。 ### 回答2: C是计算机科学中的一门编程语言,它由丹尼斯·里奇在20世纪70年代初开发。C语言是一种通用编程语言,被广泛应用于系统编程和应用程序开发。 C语言的设计特点主要包括简洁、高效和灵活。它提供了丰富的语法和强大的表达能力,使得开发者可以通过C语言来实现各种算法和数据结构。同时,C语言的代码可以高度优化,并在低级硬件上运行,因此被广泛应用于操作系统开发、编译器设计以及嵌入式系统等领域。 C语言的语法简洁、易于学习和理解,这使得许多学校将其作为学习编程的第一门语言。在C语言的基础上,学习者可以逐步掌握编程的基本概念和技巧,并为以后学习其他编程语言打下坚实的基础。 C语言还具有很强的跨平台性,可以在不同的操作系统上进行编译和运行,如Windows、Linux和Mac OS等。这使得开发者可以方便地将一个程序移植到不同的平台上,提高了开发效率。 总之,C语言是一门在计算机科学中具有重要地位的编程语言。其简洁、高效和灵活的特性使得它被广泛应用于各种领域,成为学习编程和系统编程的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值