在Asp.Net Core中使用JWT认证(二) - .Net Core中使用

作者 the7
发布于 2020年01月23日
评论 0
浏览 312
文章系列目录
在Asp.Net Core中使用JWT认证(一) - JWT介绍
在Asp.Net Core中使用JWT认证(二) - .Net Core中使用
在Asp.Net Core中使用JWT认证(三) - RSA非对称加密
在Asp.Net Core中使用JWT认证(四) - 跨语言使用
在Asp.Net Core中使用JWT认证(五) - 结束篇 一些常见问题

上一篇大概介绍了下什么是JWT,这一篇就介绍下Asp.NET Core中如何使用JWT。

安装nuget包

Install-Package Microsoft.AspNetCore.Authentication.JwtBearer

配置startup

在ConfigureServices方法里

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
{
	options.TokenValidationParameters = new TokenValidationParameters()
	{
		ValidateIssuer = false,
		ValidateAudience = false,
		IssuerSigningKey = new,
		SymmetricSecurityKey(Encoding.UTF8.GetBytes("7ViNOchKZZYKH5lY"))
    };
});

在Configure方法里

 app.UseAuthentication();

注意 默认会验证Issuer、Audience、LiftTime(过期时间)。 如果不想验证这些,可配置为false。

认证中心发令牌

获取客户端传过来的用户名密码进行验证,验证通过后发放令牌。

public string Login(string username,string password)
{
    //数据库验证username及password
        
   //通过后创建令牌
        
   var claims = new[] 
   {
        new Claim(JwtRegisteredClaimNames.Jti,""),
        new Claim(JwtRegisteredClaimNames.Exp,DateTime.Now.AddMinutes(2).ToUniversalTime().ToString(CultureInfo.InvariantCulture), ClaimValueTypes.Integer64)
   };

   var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("7ViNOchKZZYKH5lY"));
   var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha512);

   var token = new JwtSecurityToken(
            //"https://ut32.com",
            //"moz_application",
            claims:claims,
            expires: DateTime.Now.AddMinutes(2),
            signingCredentials: credentials);

   return new JwtSecurityTokenHandler().WriteToken(token);
}

认证

在需要认证的controller或action上打上[Authorize]标签,到此,就完成了JWT的基本使用。

0条评论

请先登录后发表评论
提交评论
标签云
css (1) less calc (1) C# (4) C#进制转换 (1) asp.net core (8) Authentication (1) 注销 (1) 登录 (1) 验证 (1) scroll-view (1) 微信小程序 (4) 滚动到底部 (1) StackExchange.Redis (1) google (1) 百度 (1) nginx (2) 大文件 (2) 微信小程序c#解密 (1) 微信小程序获取手机号 (1) openid (1) session_key (1) CDN (1) URL鉴权 (1) 阿里云 (1) async (1) await (1) 禁止下拉上滑效果 (1) Index类型 (1) Range类型 (1) dontent publish (1) dotnet publish在线生成器 (1) System.DrawingCore.GDIPlus报错 (1) centos (1) 中文字体 (1) SqlBulkCopy (1) SqlSugar (1) JWT (5) 认证 (3) RSA JWT (1) 非对称加密 (1) 写信 (1) 见字如面 (1) 优化建议 (2) 正确操作字符串 (1) Java (1) JWT退出 (1) RefreshToken (1) .NET Core网站开发框架 (1) Moz (3) 墨子 (1) JSON.NET (1) Newtonsoft (1) System.Text.Json (1) 自定义后台路径 (1) .netcore (1) quartz (2) 作业调度框架 (1) 作业调度 (1) 定时任务 (1) exception (1) 异常处理 (1) HttpClient (1) IHttpClientFactory (1) RDM (1) Redis (1) Redis Desktop Manager (1) RedisDesktopManager (1) linux (1) mac (1) windows (1) Could not get any response (1) postman (1) leetcode (2) 力扣 (1) 回文字符串 (1) 面试刷题 (1) centos7 (1) php安装 (1) 网易云插件 (1) 马甲App (1) Discuz插件 (1) 网易云音乐 (1) Blazor (1) 五子棋 (1) c#解题 (1) 最长连续序列 (1) Swagger (1) 在线文档 (1) blob (1) mp4 (1) 视频 (1) big file (1) 上传 (1) s (1) Azure (1) Azure Key Vault (1) Configuration (1) 密钥保管库 (1) Dapper安装 (1) Dapper是什么 (1) Dapper连接Mysql (1) Dapper连接SqlServer (1) dapper (1)