开源DDD设计模式框架YMNNetCoreFrameWork第三篇-增加ASp.net core Identity身份认证,JWT身份认证
1、框架增加Identity注册功能
2、框架增加identity登录以后获取JWTtoken
3、请求接口通过token请求,增加验证特性
源代码地址:https://github.com/topgunymn/YMNNetCoreFrameWork
JWTtoken生成代码:
- private string CreateAccessToken(IEnumerable<Claim> claims, TimeSpan? expiration = null)
- {
- var now = DateTime.UtcNow;
- SymmetricSecurityKey symmetricSecurityKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("Authentication:JwtBearer")["SecurityKey"].ToString()));
- var jwtSecurityToken = new JwtSecurityToken(
- issuer: _configuration.GetSection("Authentication:JwtBearer")["Issuer"].ToString(),
- audience: _configuration.GetSection("Authentication:JwtBearer")["Audience"].ToString(),
- claims: claims,
- notBefore: now,
- expires:now.AddMinutes(),
- // expires: now.Add(expiration ?? _configuration.Expiration), SecurityKey
- signingCredentials: new SigningCredentials(symmetricSecurityKey, SecurityAlgorithms.HmacSha256)
- );
- return new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken);
- }
JWT认证配置代码:
- services.AddIdentity<YMNUser, Role>()
- .AddEntityFrameworkStores<YMNContext>() ;
- //services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
- // //添加jwt验证:
- // .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
- // {
- services.AddAuthentication(options =>
- {
- //identity.application
- var a = options.DefaultAuthenticateScheme;
- var b = options.DefaultChallengeScheme;
- options.DefaultAuthenticateScheme = "JwtBearer";
- options.DefaultChallengeScheme = "JwtBearer";
- }).AddJwtBearer("JwtBearer", options =>
- {
- options.TokenValidationParameters = new TokenValidationParameters
- {
- ValidateLifetime = true,//是否验证失效时间
- ClockSkew = TimeSpan.FromSeconds(),
- ValidateAudience = true,//是否验证Audience
- //ValidAudience = Const.GetValidudience(),//Audience
- //这里采用动态验证的方式,在重新登陆时,刷新token,旧token就强制失效了
- AudienceValidator = (m, n, z) =>
- {
- return m != null && m.FirstOrDefault().Equals(Audience);
- },
- ValidateIssuer = true,//是否验证Issuer
- ValidIssuer = Issuer,//Issuer,这两项和前面签发jwt的设置一致
- ValidateIssuerSigningKey = true,//是否验证SecurityKey
- IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key))//拿到SecurityKey
- };
- //options.Events = new JwtBearerEvents
- //{
- // OnAuthenticationFailed = context =>
- // {
- // //Token expired
- // if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
- // {
- // context.Response.Headers.Add("Token-Expired", "true");
- // }
- // return Task.CompletedTask;
- // }
- //};
- });
开源DDD设计模式框架YMNNetCoreFrameWork第三篇-增加ASp.net core Identity身份认证,JWT身份认证的更多相关文章
- 开源DDD设计模式框架YMNNetCoreFrameWork第四篇-增加YMNSession,增加异常处理,增加策略授权
1.增加YMNSession,可以获取当前登录的用户信息 2.增加异常处理,不要使用过滤器,过滤器只能获取到mvc异常 3.增加策略授权,策略授权支持用户角色.用户名授权,初步实现 代码地址:http ...
- 开源DDD设计模式框架YMNNetCoreFrameWork第五篇-Swagger增加权限认证
配置文件services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Version = " ...
- 开源DDD设计模式框架YMNNetCoreFrameWork第6篇-.net Core Logging和Nlog结合
源码地址:https://github.com/topgunymn/YMNNetCoreFrameWork 遇到的坑:使用了Nlog以后,.NETcore自带的日志等级不起作用,只有nlog配置配置文 ...
- 开源DDD设计模式框架YMNNetCoreFrameWork第一篇
DDD设计模式:仓储.领域模型.应用层.聚合根.事件总线,以业务模型驱动设计,从数据模型驱动脱离,不用关心数据库设计,开发效率更高 DDD领域驱动设计模型概念不再讲解,直接上技术 框架搭建: 如图所示 ...
- 开源DDD设计模式框架YMNNetCoreFrameWork第二篇-增加swagger,数据库迁移,增加权限模型
1.框架去掉application层,把HOst作为application层 2.增加swagger插件 3.增加Asp.net Identity身份验证 源代码地址:https://github. ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 框架 前面我们使用了 N 多个章节, ...
- Abp vNext框架 从空项目开始 使用ASP.NET Core Web Application-笔记
参考 Abp vNext框架 从空项目开始 使用ASP.NET Core Web Application http://www.vnfan.com/helinbin/d/745b1e040c9b4f6 ...
- Asp.net core Identity + identity server + angular 学习笔记 (第三篇)
register -> login 讲了 我们来讲讲 forgot password -> reset password 和 change password 吧 先来 forgot pa ...
随机推荐
- Python 之并发编程之进程下(事件(Event())、队列(Queue)、生产者与消费者模型、JoinableQueue)
八:事件(Event()) # 阻塞事件: e = Event() 生成事件对象e e.wait() 动态给程序加阻塞,程序当中是否加阻塞完全取决于该对象中的is_set() [默认返回值 ...
- linux安装jdk并设置环境变量(看这一篇文章即可)
1.查看linux位数 查看linux是32位还是64位,影响需要下载JDK的版本 系统位数 jdk位数 x86(32位) 32位 x86_64(64位) 32位 64位 在linux命令输入: ...
- 一个基础又很重要的知识点:JDBC原理(基本案例和面试知识点)
JDBC全称又叫做Java DataBase Connectivity,就是Java数据库连接,说白了就是用Java语言来操作数据库.这篇文章主要是对JDBC的原理进行讲解.不会专注于其使用.主要是理 ...
- 本周总结(19年暑假)—— Part5
日期:2019.8.11 博客期:111 星期日
- LibreOJ #6008. 「网络流 24 题」餐巾计划
这道题其实我在刚学 OI 的时候就在一本通上看见过,还记得上面写着"新餐巾一次性买完"之类的话.当时还很稚嫩(现在也是),想了好久,根本想不出来. 学了网络流之后发现这道题的图也是 ...
- 这两天的pwn学习总结
总是一会儿切到那里,一会儿切到那里,要明确一条主线,就是buu的题,而不是按着什么视频教程还有linux和python教程去学习.那样效率比较低. 一切为了写wp为本,不胡乱点击就是提高效率的最好办法 ...
- java并发初探ReentrantWriteReadLock
java并发初探ReentrantWriteReadLock ReenWriteReadLock类的优秀博客 ReentrantReadWriteLock读写锁详解 Java多线程系列--" ...
- android:showAsAction
在res/layout/menu文件夹下,放置login.xml: <menu xmlns:android="http://schemas.android.com/apk/res/an ...
- mabatis--使用mapper代理开发dao
1.编写mapper.xml映射文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE m ...
- boost::thread demo
#include <iostream> #include <boost/date_time/gregorian/gregorian.hpp> #include <boos ...