繁体   English   中英

如何在ASP.NET Web窗体应用程序和ASP.NET核心应用程序之间共享会话和Cookie?

[英]How to share session and cookie between asp.net web form application and asp.net core application?

我们有两个以asp.net Web形式和asp.net核心形式的项目。 我们计划将它们与会话(在一个域中)集成。 我的搜索显示在.net core中,用于outproc的唯一方法是sql server和Redis。 .net核心似乎不支持状态服务器。 那正确吗?

我们已经过sql server会话状态测试,但不能正常工作,asp.net核心将会话数据保存在名称为SQLState的表中,而在asp.net中将会话数据保存为ASPStateTempSessions。 因此会话无法在它们之间共享。

每个人都有一个完整的示例来在ASP.NET(4.6或更高版本)和ASP.NET CORE之间共享Session对象吗?

这不仅仅是商店。 您是正确的,ASP.NET Core不支持状态服务器(至少是开箱即用的),因此无论如何您都可能需要移动到类似SQL Server或Redis的位置。

但是,更大的问题是加密/解密。 ASP.NET和ASP.NET Core使用完全不同的加密方法。 ASP.NET使用“机器密钥”,而ASP.NET Core使用数据保护提供程序和密钥环。 即使假定共享会话存储,除非您让他们在这里使用相同的语言讲话,否则您将无法解密彼此设置的内容。

但是,就此而言,您可能不走运。 ASP.NET MVC 5支持OWIN,并且ASP.NET Core中的数据保护基础结构与OWIN兼容,因此,如果您设置ASP.NET应用程序以利用数据保护提供程序, 并且共享相同的会话存储,密钥集和应用程序名称,那么他们就可以查看彼此的cookie。 但是,即使您将它们嵌入到MVC 5应用程序中,我也不认为Web窗体会参与其中。 因此,可能无法在两者之间共享会话存储。 我想,您还是可以尝试一下。 可能发生的最坏情况是它无法正常工作,而您又回到了现在的位置。 ASP.NET Core文档涵盖了如何设置所有内容

不知道有没有可能 ASP Web Form和ASP Net Core具有不同的体系结构。

或者,如果要在项目之间共享资源,则可以为两个项目创建Web服务。

例如。 如果要跨域和跨平台单点登录,可以执行以下方案:

在此处输入图片说明

所有项目都需要通过www.sso.com进行身份验证,以检查应用之间的登录情况。

我们需要Authenticate Web服务来检查共享身份验证。 而且我们可以为所有经过身份验证的用户共享其他数据。

在此处输入图片说明

这是详细的说明和示例项目:

https://www.codeproject.com/Articles/114484/Single-Sign-On-SSO-for-cross-domain-ASP-NET-appl-2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM