.NET Core 从1.1升级到2.0记录(Cookie中间件踩坑)
.NET Core 2.0 新时代
万众瞩目的.NET Core 2.0终于发布了,原定于9.19的dotnetconf大会的发布时间大大提前了1个月,.NET Core 2.0/.NET Standard 2.0的正式发布是.NET 开源跨平台的一个重大里程碑。
.NET Core 2.0 SDK下载地址:https://www.microsoft.com/net/download/core#/sdk
Visual Studio 2017 15.3下载地址:https://www.visualstudio.com/zh-hans/downloads/
更新ASP.NET Core 项目中的目标框架

更新ASP.NET Core Web项目中的Nuget依赖项
备注:删除之前的 Microsoft.* 依赖项,使用 Microsoft.AspNetCore.All。

.NET Core 2.0 更新Cookie中间件使用方法
备注:我这边当前项目单独使用的Cookie中间件,未结合Identity使用。
1:在ConfigureServices添加Cookie中间件,使用自定义Scheme(坑就在这里)
services.AddAuthentication(options=> {
options.DefaultChallengeScheme = CookieAuthenInfo.QwCmsWebCookieInstance;
options.DefaultSignInScheme = CookieAuthenInfo.QwCmsWebCookieInstance;
options.DefaultAuthenticateScheme = CookieAuthenInfo.QwCmsWebCookieInstance;
})
.AddCookie(CookieAuthenInfo.QwCmsWebCookieInstance, m =>
{
m.LoginPath = new PathString("/Account/Login");
m.AccessDeniedPath = new PathString("/Account/Denied");
m.LogoutPath = new PathString("/Account/Logout");
m.Cookie.Path = "/";
});
踩坑:报异常 No authenticationScheme was specified, and there was no DefaultChallengeScheme found.
特别感谢Zonciu提供的帮助。

2:在Configure使用Cookie中间件
app.UseAuthentication();
使用扩展类AuthenticationHttpContextExtensions
引入命名空间
using Microsoft.AspNetCore.Authentication;
新的扩展方法

使用方式
//登录
await HttpContext.SignInAsync(CookieAuthenInfo.QwCmsWebCookieInstance, userPrincipal,
new AuthenticationProperties
{
ExpiresUtc = DateTime.UtcNow.AddHours(12),
IsPersistent = true,
AllowRefresh = false
}); //退出
await HttpContext.SignOutAsync(CookieAuthenInfo.QwCmsWebCookieInstance);
AuthorizeAsync现在返回结果为AuthorizationResult
新的扩展方法

使用方式
var result = await HttpContext.AuthenticateAsync("xxxx");
if (result.Succeeded)
{
......
}
参考
1:[Draft] Auth 2.0 Migration announcement #1310
2:Migrating Authentication and Identity to ASP.NET Core 2.0
.NET Core 从1.1升级到2.0记录(Cookie中间件踩坑)的更多相关文章
- ASP.NET Core 2.1 : 十.升级现有Core2.0 项目到2.1
.NET Core 2.1 终于发布了, 赶紧升级一下. 一. 安装SDK 首先现在并安装 SDK(64-bit) 安装完毕后如果新建项目可以看到已经有2.1的选项了 二. 更新现有2.0项目到2.1 ...
- ASP.NET Core 2.0升级到3.0的变化和问题
前言 在.NET Core 2.0发布的时候,博主也趁热使用ASP.NET Core 2.0写了一个独立的博客网站,现如今恰逢.NET Core 3.0发布之际,于是将该网站进行了升级. 下面就记录升 ...
- 升级到tomcat7.0碰到的问题
今天把tomcat从6.0.18升级到7.0.25,发现了两个问题 问题1 java.lang.ClassNotFoundException: org.apache.catalina.mbeans.S ...
- CentOS6.5升级为CentOS7.0
CentOS6.5升级为CentOS7.0 CentOS6.5升级为CentOS7 升级前: [root@localhost ~]# cat /proc/version Linux version ...
- Asp.Net Core 2.0 项目实战(5)Memcached踩坑,基于EnyimMemcachedCore整理MemcachedHelper帮助类。
Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...
- NET Core 1.1 版本项目和2.0环境下的项目开发注意事项
在NET Core 1.1开发下的项目最好不要随便把工具更新升级到2.0,这样最容易导致之前的.NETCore直接被升级不兼容早前版本 会引起项目无法启动在运行调试IIS express 时候直接一闪 ...
- NET Core 2.0使用Cookie认证实现SSO单点登录
NET Core 2.0使用Cookie认证实现SSO单点登录 之前写了一个使用ASP.NET MVC实现SSO登录的Demo,https://github.com/bidianqing/SSO.Sa ...
- centos7.6环境zabbix3.2源码编译安装版升级到zabbix4.0长期支持版
zabbix3.2源码编译安装版升级到zabbix4.0长期支持版 项目需求: .2版本不再支持,想升级成4.0的长期支持版 环境介绍: zabbix服务端是编译安装的,数据库和web在一台机器上 整 ...
- 快速升级Zabbix 5.0 版本
Zabbix 5.0 增加了很多新功能,如:垂直菜单.隐藏菜单.用户界面中的测试项目.限制代理检查.查找并替换预处理步骤 ES7支持等等...快来部署体验一把尝鲜体验 Zabbix 5.0 吧 ...
随机推荐
- mybatis学习六 parameterType 属性
1. 在 XXXMapper.xml 中<select><delete>等标签的 parameterType 可以控制参数类型2. SqlSession 的 selectLis ...
- 开发简单的JavaWeb项目
一.配置相关环境 下载配置JDK,eclipse,Tomcat服务器,Mysql数据库,Navicat for MySQL(数据库可视化工具) 如果你已经做好各个环境的配置,eclipse与Tomca ...
- 代理设计模式 (静态代理设计模式)+ 动态代理(JDK和Cglib)
一.代理设计模式 1.设计模式:前人总结一套解决特定问题的代码 2.代理设计模式优点: 2.1 保护真实对象 2.2 让真实对象职责更明确 2.3 扩展 3.代理设计模式 3.1 真实对象(老总) 3 ...
- 783. Minimum Distance Between BST Node
方法一,非递归方法,中序遍历 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *l ...
- 2018.10.31 bzoj4737: 组合数问题(lucas定理+容斥原理+数位dp)
传送门 这是一道让我重新认识lucaslucaslucas的题. 考虑到lucaslucaslucas定理: (nm)≡(n%pm%p)∗(npmp)\binom n m \equiv \binom ...
- Router components
Input Unit The Input unit contains virtual channel buffers and an input VC arbiter. Route Info: use ...
- C++STL set
set set是一种集合容器,所包含的元素是唯一的,集合中的元素按一定顺序排列,元素插入过程是按排序规则插入,所以不能插入指定位置 set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树,插入和删除 ...
- activemq部署
系统环境 IP salt-master-1:192.168.0.156 salt-master-2:192.168.0.157 node-test-1:192.168.0.158 node-test- ...
- dj 中间件
中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响到 ...
- 深入浅出javascript(二)函数和this对象
一.函数对象的属性和方法 函数是一种数据类型,也是对象,这一点很明确.因此,函数对象也可以添加属性和方法,但是这里的属性和方法是静态的,之所以这样说,就是为了区别构造函数. 示例如下: ①创建一个空的 ...