1、框架增加Identity注册功能

2、框架增加identity登录以后获取JWTtoken

3、请求接口通过token请求,增加验证特性

源代码地址:https://github.com/topgunymn/YMNNetCoreFrameWork

JWTtoken生成代码:

  1. private string CreateAccessToken(IEnumerable<Claim> claims, TimeSpan? expiration = null)
  2. {
  3. var now = DateTime.UtcNow;
  4. SymmetricSecurityKey symmetricSecurityKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("Authentication:JwtBearer")["SecurityKey"].ToString()));
  5. var jwtSecurityToken = new JwtSecurityToken(
  6. issuer: _configuration.GetSection("Authentication:JwtBearer")["Issuer"].ToString(),
  7. audience: _configuration.GetSection("Authentication:JwtBearer")["Audience"].ToString(),
  8. claims: claims,
  9. notBefore: now,
  10. expires:now.AddMinutes(),
  11. // expires: now.Add(expiration ?? _configuration.Expiration), SecurityKey
  12. signingCredentials: new SigningCredentials(symmetricSecurityKey, SecurityAlgorithms.HmacSha256)
  13. );
  14.  
  15. return new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken);
  16. }

JWT认证配置代码:

  1. services.AddIdentity<YMNUser, Role>()
  2. .AddEntityFrameworkStores<YMNContext>() ;
  3. //services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
  4. // //添加jwt验证:
  5. // .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
  6. // {
  7. services.AddAuthentication(options =>
  8. {
  9. //identity.application
  10. var a = options.DefaultAuthenticateScheme;
  11. var b = options.DefaultChallengeScheme;
  12. options.DefaultAuthenticateScheme = "JwtBearer";
  13. options.DefaultChallengeScheme = "JwtBearer";
  14. }).AddJwtBearer("JwtBearer", options =>
  15. {
  16. options.TokenValidationParameters = new TokenValidationParameters
  17. {
  18. ValidateLifetime = true,//是否验证失效时间
  19. ClockSkew = TimeSpan.FromSeconds(),
  20.  
  21. ValidateAudience = true,//是否验证Audience
  22. //ValidAudience = Const.GetValidudience(),//Audience
  23. //这里采用动态验证的方式,在重新登陆时,刷新token,旧token就强制失效了
  24. AudienceValidator = (m, n, z) =>
  25. {
  26. return m != null && m.FirstOrDefault().Equals(Audience);
  27. },
  28. ValidateIssuer = true,//是否验证Issuer
  29. ValidIssuer = Issuer,//Issuer,这两项和前面签发jwt的设置一致
  30.  
  31. ValidateIssuerSigningKey = true,//是否验证SecurityKey
  32. IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key))//拿到SecurityKey
  33. };
  34. //options.Events = new JwtBearerEvents
  35. //{
  36. // OnAuthenticationFailed = context =>
  37. // {
  38. // //Token expired
  39. // if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
  40. // {
  41. // context.Response.Headers.Add("Token-Expired", "true");
  42. // }
  43. // return Task.CompletedTask;
  44. // }
  45. //};
  46. });

开源DDD设计模式框架YMNNetCoreFrameWork第三篇-增加ASp.net core Identity身份认证,JWT身份认证的更多相关文章

  1. 开源DDD设计模式框架YMNNetCoreFrameWork第四篇-增加YMNSession,增加异常处理,增加策略授权

    1.增加YMNSession,可以获取当前登录的用户信息 2.增加异常处理,不要使用过滤器,过滤器只能获取到mvc异常 3.增加策略授权,策略授权支持用户角色.用户名授权,初步实现 代码地址:http ...

  2. 开源DDD设计模式框架YMNNetCoreFrameWork第五篇-Swagger增加权限认证

    配置文件services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Version = " ...

  3. 开源DDD设计模式框架YMNNetCoreFrameWork第6篇-.net Core Logging和Nlog结合

    源码地址:https://github.com/topgunymn/YMNNetCoreFrameWork 遇到的坑:使用了Nlog以后,.NETcore自带的日志等级不起作用,只有nlog配置配置文 ...

  4. 开源DDD设计模式框架YMNNetCoreFrameWork第一篇

    DDD设计模式:仓储.领域模型.应用层.聚合根.事件总线,以业务模型驱动设计,从数据模型驱动脱离,不用关心数据库设计,开发效率更高 DDD领域驱动设计模型概念不再讲解,直接上技术 框架搭建: 如图所示 ...

  5. 开源DDD设计模式框架YMNNetCoreFrameWork第二篇-增加swagger,数据库迁移,增加权限模型

    1.框架去掉application层,把HOst作为application层 2.增加swagger插件 3.增加Asp.net  Identity身份验证 源代码地址:https://github. ...

  6. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  7. ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 框架 前面我们使用了 N 多个章节, ...

  8. Abp vNext框架 从空项目开始 使用ASP.NET Core Web Application-笔记

    参考 Abp vNext框架 从空项目开始 使用ASP.NET Core Web Application http://www.vnfan.com/helinbin/d/745b1e040c9b4f6 ...

  9. Asp.net core Identity + identity server + angular 学习笔记 (第三篇)

    register -> login 讲了 我们来讲讲 forgot password -> reset password  和 change password 吧 先来 forgot pa ...

随机推荐

  1. Python 之并发编程之进程下(事件(Event())、队列(Queue)、生产者与消费者模型、JoinableQueue)

    八:事件(Event()) # 阻塞事件:    e = Event() 生成事件对象e    e.wait() 动态给程序加阻塞,程序当中是否加阻塞完全取决于该对象中的is_set() [默认返回值 ...

  2. linux安装jdk并设置环境变量(看这一篇文章即可)

    1.查看linux位数 查看linux是32位还是64位,影响需要下载JDK的版本   系统位数 jdk位数 x86(32位) 32位 x86_64(64位) 32位 64位 在linux命令输入: ...

  3. 一个基础又很重要的知识点:JDBC原理(基本案例和面试知识点)

    JDBC全称又叫做Java DataBase Connectivity,就是Java数据库连接,说白了就是用Java语言来操作数据库.这篇文章主要是对JDBC的原理进行讲解.不会专注于其使用.主要是理 ...

  4. 本周总结(19年暑假)—— Part5

    日期:2019.8.11 博客期:111 星期日

  5. LibreOJ #6008. 「网络流 24 题」餐巾计划

    这道题其实我在刚学 OI 的时候就在一本通上看见过,还记得上面写着"新餐巾一次性买完"之类的话.当时还很稚嫩(现在也是),想了好久,根本想不出来. 学了网络流之后发现这道题的图也是 ...

  6. 这两天的pwn学习总结

    总是一会儿切到那里,一会儿切到那里,要明确一条主线,就是buu的题,而不是按着什么视频教程还有linux和python教程去学习.那样效率比较低. 一切为了写wp为本,不胡乱点击就是提高效率的最好办法 ...

  7. java并发初探ReentrantWriteReadLock

    java并发初探ReentrantWriteReadLock ReenWriteReadLock类的优秀博客 ReentrantReadWriteLock读写锁详解 Java多线程系列--" ...

  8. android:showAsAction

    在res/layout/menu文件夹下,放置login.xml: <menu xmlns:android="http://schemas.android.com/apk/res/an ...

  9. mabatis--使用mapper代理开发dao

    1.编写mapper.xml映射文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE m ...

  10. boost::thread demo

    #include <iostream> #include <boost/date_time/gregorian/gregorian.hpp> #include <boos ...