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

作者 the7
发布于 2020年01月23日
评论 0
浏览 150
文章系列目录
在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的基本使用。

4条评论

  • 念往昔丶繁华竞逐

    2019年5月20日

    最后一个五官很漂亮,虽然脸稍微大了一点点,但也算普通人里漂亮的
  • Eleven

    2019年5月20日

    念往昔丶繁华竞逐:
    最后一个五官很漂亮,虽然脸稍微大了一点点,但也算普通人里漂亮的...
    这帖子真的是精品。美中不足的是,为什么要用繁体,虽然能看懂,但有些麻烦呀。
  • SukiU

    2019年5月20日

    我曾在某外企互联网公司工作过一段时间,他们就是那种工作时间聊天摸鱼,下班时间拼命工作,然后加班蹭加班费和补贴😂
微信公众号
站长帮
微信公众号,每日更新!