文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

c#中token怎么用

2023-06-29 04:12

关注

这篇文章主要介绍了c#中token怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

token的存在意义

这是我初略了解的token的存在意义

使用方法

先安装一个JWT,注意NetFramework的版本

c#中token怎么用

创建一个工具类TokenInfo.cs

using JWT;using JWT.Algorithms;using JWT.Serializers;using System;using System.Collections.Generic;using System.Web;using System.Web.Script.Serialization;namespace ProjectLYG.Common{    public class TokenInfo    {        public TokenInfo()        {            UserName = "j";            Pwd = "123456";        }        public string UserName { get; set; }        public string Pwd { get; set; }    }    public class TokenHelper    {        public static string SecretKey = "bqsid123k12s0h2d3uhf493fh02hdd102h9s3h48ff";//这个服务端加密秘钥 属于私钥        private static JavaScriptSerializer myJson = new JavaScriptSerializer();        /// <summary>        /// 生成Token        /// </summary>        /// <param name="M"></param>        /// <returns></returns>        public static string GenToken(TokenInfo M)        {            var payload = new Dictionary<string, dynamic>            {                {"UserName", M.UserName},//用于存放当前登录人账户信息                {"UserPwd", M.Pwd}//用于存放当前登录人登录密码信息            };            IJwtAlgorithm algorithm = new HMACSHA256Algorithm();            IJsonSerializer serializer = new JsonNetSerializer();            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();            IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);            return encoder.Encode(payload, SecretKey);        }        /// <summary>        /// 验证Token        /// </summary>        /// <returns></returns>        public static string DecodeToken()        {            //获取request中的token            string token = HttpContext.Current.Request.Headers["Authorization"];            //去掉前面的Bearer            if (token != null && token.StartsWith("Bearer"))                token = token.Substring("Bearer ".Length).Trim();            try            {                var json = GetTokenJson(token);                TokenInfo info = myJson.Deserialize<TokenInfo>(json);                return "Token is true";            }            catch (TokenExpiredException)            {                return "Token has expired";            }            catch (SignatureVerificationException)            {                return "Token has invalid signature";            }        }        public static string GetTokenJson(string token)        {            try            {                IJsonSerializer serializer = new JsonNetSerializer();                IDateTimeProvider provider = new UtcDateTimeProvider();                IJwtValidator validator = new JwtValidator(serializer, provider);                IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();                IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder);                var json = decoder.Decode(token, SecretKey, verify: true);                return json;            }            catch (Exception)            {                throw;            }        }    }}

使用方法

                 //生成Token                TokenInfo tokenInfo = new TokenInfo();                tokenInfo.Pwd = password;                tokenInfo.UserName = tel;                string token = TokenHelper.GenToken(tokenInfo);                ........                 //token验证                string tokenInfo = TokenHelper.DecodeToken();                ........

工具类已将返回的Request的token值提取出,无须传值

感谢你能够认真阅读完这篇文章,希望小编分享的“c#中token怎么用”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯