.Net Core5 JWT的使用

这篇具有很好参考价值的文章主要介绍了.Net Core5 JWT的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先需要安装的NuGet包有:

Microsoft.AspNetCore.Authentication.JwtBearer

Swashbuckle.AspNetCore

Swashbuckle.AspNetCore.Filters

jose-jwt

大致是这些代码放到项目中如果有报错信息再去具体解决安装需要的NuGet包。

首先需要在Startup.cs文件中的ConfigureServices方法中添加的代码有

services.AddSwaggerGen(options =>
            {
                //开启权限锁
                options.OperationFilter<AddResponseHeadersFilter>();
                options.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();
                options.OperationFilter<SecurityRequirementsOperationFilter>();

                //在header中添加token,传递到后台
                options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
                {
                    Description = "JWT授权(数据将在请求头中进行传递)直接在下面框中输入Bearer {token}(注意两者之间是一个空格) \"",
                    Name = "Authorization",//jwt默认的参数名称
                    In = ParameterLocation.Header,//jwt默认存放Authorization信息的位置(请求头中)
                    Type = SecuritySchemeType.ApiKey
                });
            });
//认证方案
            services.AddAuthentication(option => {
                option.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                option.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(
                option => {
                    option.TokenValidationParameters = new TokenValidationParameters
                    {
                        //是否验证发行人
                        ValidateIssuer = true,
                        ValidIssuer = Configuration["JwtConfig:Issuer"],//发行人

                        //是否验证受众人
                        ValidateAudience = true,
                        ValidAudience = Configuration["JwtConfig:Audience"],//受众人

                        //是否验证密钥
                        ValidateIssuerSigningKey = true,
                        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtConfig:key"])),

                        ValidateLifetime = true, //验证生命周期

                        RequireExpirationTime = true, //过期时间

                        ClockSkew = TimeSpan.Zero   //平滑过期偏移时间
                    };
                }
            );

接着在Configure方法中开启两个中间件

//认证中间件
app.UseAuthentication();

//授权中间件
app.UseAuthorization();

然后在appsettings.json中加入以下配置

"JwtConfig": {
    "key": "JWTStudyWebsite_DI20DXU3",
    "Issuer": "testJwt",
    "Audience": "wlw"
  },

去使用一个简单的登录去测试JWT是否可以生成

/// <summary>
        /// 登录
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        public async Task<ResultDto> LoginAsync(LoginDto dto)
        {
            //图片验证码对比
            var captchaRul = _captcha.Validate(dto.id, dto.code);
            if (!captchaRul)
            {
                return new ResultDto
                {
                    Result = Result.Failure,
                    Message = "验证码错误,请重新输入"
                };
            }
            else
            {
                var uData = await _baseRepository.FindAsync(x => x.UserName == dto.UserName);
                if (uData == null)
                {
                    return new ResultDto
                    {
                        Result = Result.Failure,
                        Message = "未找到此用户!"
                    };
                }
                else if (uData.Password.ToUpper() == dto.Password.Md5().ToUpper())
                {
                    var roleIds = _baseadminRoleResRepository.Queryable().Where(x => x.AdminId == uData.AdminId).Select(m => m.RoleId).ToList();

                    //身份信息认证
                    //Session或Cookies换成JWT
                    IList<Claim> claims = new List<Claim> {
                        new Claim(JwtClaimTypes.Id,uData.AdminId.ToString()),
                        new Claim(JwtClaimTypes.Name,uData.UserName),
                        new Claim(ClaimTypes.Name,uData.UserName),
                        new Claim(ClaimTypes.Role,string.Join(',',roleIds))
                    };

                    //JWT密钥
                    var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtConfig:key"]));

                    //算法
                    var cred = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

                    //过期时间
                    DateTime expires = DateTime.UtcNow.AddMinutes(30);

                    //Payload负载
                    var token = new JwtSecurityToken(
                        issuer: configuration["JwtConfig:Issuer"],
                        audience: configuration["JwtConfig:Audience"],
                        claims: claims,
                        notBefore: DateTime.UtcNow,
                        expires: expires,
                        signingCredentials: cred
                        );

                    var handler = new JwtSecurityTokenHandler();

                    //生成令牌
                    string jwt = handler.WriteToken(token);

                    return new ResultDto
                    {
                        Result = Result.Success,
                        Message = "登录成功",
                        Token = jwt,
                    };
                }
                else
                {
                    return new ResultDto
                    {
                        Result = Result.Failure,
                        Message = "密码错误!"
                    };
                }
            }
        }

如果代码中的有报错的地方是需要引用一个NuGet包:IdentityModel

.Net Core5 JWT的使用

最后就可以生成Token了。文章来源地址https://www.toymoban.com/news/detail-708504.html

到了这里,关于.Net Core5 JWT的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • .Net Core Jwt鉴权授权

    目录 简介 基于.Net Core 验证方式 Jwt获取Token 引入三方包 生成Token UserInfo JwtConfig WebApi测试(获取Token) Program.cs appsetting.json Controller .Net Core 验证(webApi) Progarm.cs Contorller .Net Core 授权 简介 Program.cs JwtAuthorization.cs 注意 Autofac 注册授权服务 Controller 注意 jwt触发委托 Jwt分为三段 通过远

    2024年02月13日
    浏览(34)
  • ASP.NET CORE WEBAPI 登录 JWT 鉴权 ,接口权限验证

    介绍 当今Web开发中,API的使用越来越广泛,而API的安全性也变得越来越重要。其中,JWT(JSON Web Token)鉴权和授权是一种常见的解决方案。 本篇文章将会介绍JWT鉴权和授权的原理、实现方式以及注意事项。 什么是JWT? JWT是一种基于JSON格式的开放标准(RFC7519),用于在网络

    2023年04月21日
    浏览(69)
  • C# ASP.NET Core Web API 身份授权(JWT)验证(一)

    1.开发环境 VS2022,安装时记得勾选ASP.NET有关的都选上,建议全选,省的麻烦。          2.创建初始工程 TestApi (你自己的工程名称)。    这就创建工程成功了,按 F5 则可以进行调试了。 而在项目中,我们不仅仅会用到基础的api功能,我们一般还会用到  身份授权(J

    2024年02月02日
    浏览(61)
  • ASP.NET Core 8.0 WebApi 从零开始学习JWT登录认证

    我一起写后端Api我都是直接裸连的,但是现在为了规范一些,我还是打算上一个JWT功能 ASP.NET Web API 2系列(四):基于JWT的token身份认证方案 Jwt-dotnet github 选好了模板,就进去看看号了,42M的下载量已经很高了,一般来说,只要超过500k的下载量,基本就是一个稳定的代码仓库了

    2024年04月09日
    浏览(45)
  • ASP.NET Core高级之认证与授权(二)--JWT认证前后端完整实现

    了解JWT身份认证的流程 了解基于JWT身份认证和Session身份认证的区别 学习如何在ASP.NET Core WebAPI项目中封装JWT认证功能 在上文ASP.NET Core高级之认证与授权(一)–JWT入门-颁发、验证令牌中演示了JWT认证的一个入门案例,本文是一个基于JWT认证的完整的前后端实现代码案例。 JWT身

    2024年02月01日
    浏览(47)
  • Failed resolution of: Lorg/apache/hc/core5/http/message/BasicNameValuePair;

    这是我引用的库文件 implementation (“com.esri.arcgisruntime:arcgis-android:100.15.3”) 使用ArcGIS绘制天地图报错如下: Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/hc/core5/http/message/BasicNameValuePair; 查询资料得知是Android 9以后不支持 http库并删除掉该库,Google官方推荐使用Ht

    2024年01月21日
    浏览(42)
  • 7z压缩包有可能被破解吗,需要多久,暴力穷举和字典破解分别的速度分析

    开门见山,我看到网上有很多此类软件,功能就是来破解7zip格式的压缩包,但都没有认真进行测试,这里认真进行判断和测试 首先,目前世界最快的计算机为Frontier,算力1,685.65 PFlop/s。目前最高的算力为全网比特币算力,6 EFlops/s。目前世界上的网民为50亿,而考虑到这只是

    2024年02月01日
    浏览(61)
  • jieba.net使用NuGet管理器安装后初始化TfidfExtractor对象时报错

    在引用安装jieba.net后,引用的Resources下只有如图几个文件 导致初始化TfidfExtractor时报错,报找不到 Could not find file \\\'E:\\\\TZKJNet\\\\robotindustry\\\\modules\\\\Tzkj.Superhard.SupplyDemand\\\\src\\\\Tzkj.Superhard.SupplyDemand.HttpApi.Host\\\\bin\\\\Debug\\\\net7.0\\\\Resources\\\\pos_prob_start.json\\\'. https://github.com/anderscui/jieba.NET官方说

    2024年01月23日
    浏览(87)
  • 【C#】.Net Framework框架使用JWT

    2023年,第31周,第2篇文章。给自己一个目标,然后坚持总会有收货,不信你试试! 本篇文章主要简单讲讲,.Net Framework框架下使用JWT的代码例子,以及他们的基本概念。 2002年微软发布了.net framework 1.0,那个时候博主刚开始玩传奇游戏,接触电脑的时间还是挺早的。 JWT(JS

    2024年02月15日
    浏览(57)
  • 用NuGet安装 Oracle ODP.NET

    oracle官网原文: Using NuGet to Install and Configure Oracle Data Provider for .NET Using NuGet to Install and Configure Oracle Data Provider for .NET In this section, you will install ODP.NET NuGet packages from nuget.org. Select  View    Solution Explorer . Description of this image Right-click  References  in the Solution Explorer and choose  M

    2024年04月28日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包