我正在将旧应用程序迁移到 ASP.NET core/MVC . 此应用程序使用一些OWIN中间件来管理身份验证 .
使用“UseOwinAppBuilder”注册时,中间件工作正常,但是,在应用程序的某些部分,我需要获得“Owin上下文”才能使用身份验证 . “旧”代码的作用如下:
var context = Request.GetOwinContext();
var authentication = context.Authentication.AuthenticateAsync("AuthScheme");
我知道在ASP.NET核心中我可以使用 HttpContext.Authentication.AuthenticateAsync
管理身份验证,但是如果我替换上一行
var authentication = HttpContext.Authenticaiton.AuthenticateAsync("AuthScheme");
我收到一个错误:
“没有配置身份验证处理程序来验证方案:AuthScheme”
我怀疑发生了错误,因为身份验证中间件是使用OWIN注册的,而不是在ASP.NET Core中注册的 .
我知道有一些对象允许创建“OwinEnvironment”并访问“OwinFeatureCollection”,但我不确定这是否可以访问“旧”Owin上下文(我找不到详细信息)有关这些对象如何工作的文档) .
概述:是否有一些方法可以访问ASP.NET Core中的“旧”Owin上下文,以便使用已注册的中间件管理身份验证?
1 回答
根据您正在使用的身份验证,您可能需要检查Startup.cs文件以确保身份验证方案设置正确 .
例如,如果您在ASP.NET Core中使用Cookie身份验证中间件...
如果您正在使用JWT令牌身份验证,您会看到类似这样的内容......
Auth中间件通常还带有一些众所周知的常量,因此您可以使用该提供程序的默认值 .
如果您的身份验证中间件刚刚使用app.UseMagicAuthentication()进行设置,则可以检查它是否将选项作为参数 .