C# JWT权限验证的实现

 更新时间:2022年03月22日 10:56:40   作者:幸福简单2020  
本文主要介绍了C# JWT权限验证的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

什么是JWT,它是一种对API的保护方案,为什么要进行保护呢

  • 防泄漏:你肯定不希望你的数据能被别人随意调用,比如公司的机密信息,不可能每个人都可以访问到
  • 防攻击:防止被人伪装恶意调用接口,利用网关就把请求拦截在外面,防止对服务器造成资源压力
  • 防止被人篡改,导致请求不到信息,防重放攻击(案例:在公共网络环境中,请求被截获,稍后被重放或多次重放)

设计原则

  • 轻量级
  • 易于开发、测试和部署
  • 适合于异构系统(跨操作系统、多语言简易实现)
  • 所有写操作接口(增、删、改 操作)
  • 非公开的读接口(如:涉密/敏感/隐私 等)

第一步:创建token

/// <summary>
        /// 创建token
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public IActionResult CreateJWT1()
        {
            //创建声明Token数组
            var claim = new Claim[]
                {
                new Claim("userid","123"),
                new Claim("userCode","kevinMa"),
                new Claim("projectID","62"),
                new Claim("isValid","1"),
                new Claim("userName","马鹏"),
                new Claim("address","深圳"),
                new Claim("datetime",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
                new Claim("expires",DateTime.Now.AddHours(1).ToString("yyyy-MM-dd HH:mm:ss")),
                };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("yanglingcong@qq.com"));//密钥大小要超过128bt,最少要16位

            //实例化一个token对象
            //第一种方式
            //var token = new JwtSecurityToken(claims: claim);

            //第二种方式
            var token = new JwtSecurityToken(
                issuer: "kevin",//发起人:当前项目
                audience: "kevin project",//订阅:我们需要谁去使用这个Token
                claims: claim,//声明的数组
                expires: DateTime.Now.AddHours(1),//当前时间加一小时,一小时后过期
                signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256)//数字签名 第一部分是密钥,第二部分是加密方式
                );

            //生成token
            var jwtToken = new JwtSecurityTokenHandler().WriteToken(token);
            return ToSuccessJson(new { token = jwtToken });
        }

第二步:解析token

/// <summary>
        /// 解析token
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult JXToken(string token)
        {
            
            //第一种直接用JwtSecurityTokenHandler提供的read方法
            var jwtHander = new JwtSecurityTokenHandler();
            JwtSecurityToken jwtSecurityToken = jwtHander.ReadJwtToken(token);
            
            GetTokenModel tokenModel = new GetTokenModel();
            var currentInfo = jwtSecurityToken.Claims;
            if (currentInfo.Count() > 0)
            {
                tokenModel.userid = currentInfo.FirstOrDefault(f => f.Type == "userid").Value;
                tokenModel.userCode = currentInfo.FirstOrDefault(f => f.Type == "userCode").Value;
                tokenModel.projectID = currentInfo.FirstOrDefault(f => f.Type == "projectID").Value;
                tokenModel.userName = currentInfo.FirstOrDefault(f => f.Type == "userName").Value;
                tokenModel.address = currentInfo.FirstOrDefault(f => f.Type == "address").Value;
                tokenModel.datetime = currentInfo.FirstOrDefault(f => f.Type == "datetime").Value;
                tokenModel.expires = currentInfo.FirstOrDefault(f => f.Type == "expires").Value;
            }
            return ToSuccessJson(new { tokenModel });
        }

到此这篇关于C# JWT权限验证的实现的文章就介绍到这了,更多相关C# JWT权限验证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#中async和await的深入分析

    C#中async和await的深入分析

    Async/Await是C# 5引入的关键字,用以提高用户界面响应能力和对Web资源的访问能力,同时它使异步代码的编写变得更加容易,下面这篇文章主要给大家介绍了关于C#中async和await的相关资料,需要的朋友可以参考下
    2022-11-11
  • Unity命令行打包WebGL的示例代码

    Unity命令行打包WebGL的示例代码

    这篇文章主要介绍了Unity命令行打包WebGL的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • c# 将Datatable数据导出到Excel表格中

    c# 将Datatable数据导出到Excel表格中

    本文主要介绍了c# 将Datatable数据导出到Excel表格中的方法。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • Untiy Shader实现纹理贴图滚动

    Untiy Shader实现纹理贴图滚动

    这篇文章主要为大家详细介绍了Untiy Shader实现纹理贴图滚动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • 深入C#任务管理器中应用程序选项隐藏程序本身的方法详解

    深入C#任务管理器中应用程序选项隐藏程序本身的方法详解

    本篇文章是对在C#任务管理器中应用程序选项隐藏程序本身的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C#操作windows注册表的方法

    C#操作windows注册表的方法

    这篇文章主要介绍了C#操作windows注册表的方法,涉及C#针对注册表的读取与写入技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#集合本质之链表的用法详解

    C#集合本质之链表的用法详解

    本文详细讲解了C#集合本质之链表的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • C# WinForm制作异形窗体与控件的方法

    C# WinForm制作异形窗体与控件的方法

    这篇文章主要介绍了C# WinForm制作异形窗体与控件的方法,结合实例形式分析了WinForm制作异形窗体与控件的原理、实现步骤与相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • C#实现贝塞尔曲线的方法

    C#实现贝塞尔曲线的方法

    这篇文章主要为大家详细介绍了C#实现贝塞尔曲线的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • c#操作附加数据库的方法

    c#操作附加数据库的方法

    这篇文章主要介绍了c#操作附加数据库的方法,涉及C#针对附加数据库的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08

最新评论