广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >c#中token的使用方法实例
  • 700
分享到

c#中token的使用方法实例

2024-04-02 19:04:59 700人浏览 薄情痞子
摘要

目录token的存在意义使用方法token的存在意义 这是我初略了解的token的存在意义 用户使用用户名密码来请求服务器服务器进行验证用户的信息服务器通过验证发送给用户一个toke

token的存在意义

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

  • 用户使用用户名密码来请求服务器
  • 服务器进行验证用户的信息
  • 服务器通过验证发送给用户一个token
  • 客户端存储token,并在每次请求时附送上这个token值
  • 服务端验证token值,并返回数据

使用方法

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

创建一个工具类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 = "bqsid123k12s0h1d3uhf493fh02hdd102h9s3h38ff";//这个服务端加密秘钥 属于私钥
        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的使用方法实例的文章就介绍到这了,更多相关c# token内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: c#中token的使用方法实例

本文链接: https://www.lsjlt.com/news/139048.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c#中token的使用方法实例
    目录token的存在意义使用方法token的存在意义 这是我初略了解的token的存在意义 用户使用用户名密码来请求服务器服务器进行验证用户的信息服务器通过验证发送给用户一个toke...
    99+
    2022-11-13
  • C# 怎么实现Token的方法
    本篇内容介绍了“C# 怎么实现Token的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是JWTJWT:Json web token...
    99+
    2023-06-14
  • Elasticsearch 计数分词中的token使用实例
    目录正文使用命令写入文档搜索 token 文档正文 在我们针对 text 类型的字段进行分词时,分词器会把该字段分解为一个个的 token。如果你对分词器还不是很理解的话,请参考我...
    99+
    2023-01-31
    Elasticsearch计数分词token Elasticsearch token
  • C语言中static的使用方法实例详解
    目录前言一、static修饰变量1.修饰局部变量2.修饰全局变量二、static修饰函数补充:static的好处是什么?总结前言 static关键字不仅可以用来修饰变量,还可以用来修...
    99+
    2022-11-13
    c语言static的用法 static作用 c语言 c语言static关键字的用法
  • vue中使用jwt-decode解析token的方法
    安装: cnpm i -S jwt-decode 引入: import jwt_decode from "jwt-decode"; 使用: import jwt_decode f...
    99+
    2022-11-13
  • C#中RadioButton的实例用法
    本篇内容介绍了“ C#中RadioButton的实例用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C# RadioButton是大家经常...
    99+
    2023-06-17
  • C++中string类的常用方法实例总结
    目录引言C++string类常用方法总结引言 C++中提供了一种新的数据类型——字符串类型(string)。实际上string并不是C++的基本类型,它是在C...
    99+
    2022-11-13
  • C#中using关键字的使用方法示例
    目录1 :using 指令(命名空间)2 :using 语句(1 ):using (ResourceType Identifier = Expression ) State...
    99+
    2022-11-13
  • C#中ListView用法实例
    目录添加标题显示网格添加数据到表格中自定义其他属性结束添加标题 在 Winfrom 界面中添加一个 ListView 组件,然后点击右上角的箭头,点击编辑列 添加下面标题,然后点击...
    99+
    2022-11-13
  • C#中方法重载实例分析
    这篇文章主要介绍了C#中方法重载实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#中方法重载实例分析文章都会有所收获,下面我们一起来看看吧。最近在看 C++ 的方法重载,我就在想 C# 中的重载底层是怎...
    99+
    2023-07-02
  • Android中使用AndroidTestCase的方法实例
    Android 使用 AndroidTestCase 的步骤 1.新建一个类继承 AndroidTestCase 代码如下: public class TestAudio e...
    99+
    2022-06-06
    方法 Android
  • JavaScript中Promise的使用方法实例
    目录前言Promise简介什么是回调地狱Promise的特点创建Promise实例then方法resolve 和 reject 的参数传递then()链式调用then()的返回值ca...
    99+
    2022-11-13
  • C++实现单例模式的方法
    目录饿汉模式懒汉模式锁 + 智能指针局部静态变量总结 饿汉模式 类实例化就会占用内存,浪费资源,效率高,不存在线程安全问题。 class Singleton{ Singl...
    99+
    2022-11-12
  • C#接口方法的实例介绍
    本篇内容介绍了“C#接口方法的实例介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!公有方法实现C#接口方法尽管C#在定义接口时不用指明接口...
    99+
    2023-06-18
  • C#中CheckedListBox控件的用法实例
    目录一、常用属性、方法和事件1.常用属性2.常用方法3.常用事件二、应用实例1.实例描述2.属性设置3.事件处理4.实现代码总结一、常用属性、方法和事件 1.常用属性 (1)Chec...
    99+
    2022-11-12
  • C++中list的用法实例讲解
    目录前言一、list的节点二、list的迭代器2.1、模板参数为什么是三个2.2 const 迭代器2.3 修改方法二、美中不足三、迭代器的分类3.x std::find的一个报错总...
    99+
    2022-11-12
  • JavaScript中innerHTML使用方法实例
    目录innerHTMLinnerHTML的写法总结innerHTML innerHTML属性允许更改html元素的内容,可以设置或返回表格行的开始和结束标签之间的HTML,本篇文章就...
    99+
    2022-11-13
    js中innerhtml的用法 js中innerhtml js中的innerhtml
  • c++中的bind使用方法
    除了容器有适配器之外,其实函数也提供了适配器,适配器的特点就是将一个类型改装成为拥有子集功能的新的类型。其中函数的适配器典型的就是通过std::bind来实现。 std::bind函...
    99+
    2022-11-12
  • jQuery中ajax post() 方法的使用实例
    这篇文章主要讲解了“jQuery中ajax post() 方法的使用实例”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jQuery中ajax post() ...
    99+
    2022-10-19
  • Oracle中日期的使用方法实例
    目录前言1 日期等于\大于\小于2 日期差值计算1 直接将两个时间来相减2 时间和日期的两层转换3 使用trunc函数总结前言 在使用sql函数时,因项目数据库不同,导致sql中日期的使用方法大不相同, 一些常见的日期计...
    99+
    2022-07-06
    oracle日期操作 Oracle 日期函数 oracle 系统日期
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作