从 DotNetNuke 迁移到 ASP.NET Core
Posted
技术标签:
【中文标题】从 DotNetNuke 迁移到 ASP.NET Core【英文标题】:Migrating from DotNetNuke to ASP.NET Core 【发布时间】:2017-08-27 01:56:53 【问题描述】:我有一个基于 DNN(一堆 DNN 模块)的应用程序,并希望逐步将此应用程序迁移到普通的 ASP.NET Core。 (远离 DNN) 我只依赖 DNN 用户管理和导航,其余的基本上都是普通的 ASP.NET Web 窗体。 (或更好:DNN 中的 Web 用户控件)
计划是创建一个全新的应用程序(不同的子域)并首先将我的用户管理迁移到 .NET Core Identity。用户将通过新应用程序登录,并且需要在迁移期间在核心应用程序和 DNN 之间切换。我想使用新的基于身份的机制,并且必须让用户与基于 DNN 成员资格的表保持同步,直到我可以弃用最后一个 DNN 模块。
发件人:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity 似乎身份创建了自己的 cookie,这与 DNN 完全不同。 有谁知道创建共享 cookie 的方法,该 cookie 允许用户从旧应用程序移动到新应用程序而无需登录两次? 或者有没有更好的方法来实现这个功能?
更新: 做更多的研究,在这一点上,将这个项目分成两个阶段似乎更有意义: 1.使用MVC 5启动新App(为了稳定) 2. 一段时间后将 MVC 5 App 迁移到 .NET Core
在这种情况下,对于使用 OWIN 身份验证的 MVC 5,问题仍然存在。是否可以在 MVC 和 DNN 之间创建共享的 auth cookie?
【问题讨论】:
看这个帖子:link 看来这并不容易。 DotNetNuke 需要一个非常特定的 cookie,其中包含使用 MachineKey(来自 web.config)加密的用户名。不确定是否可以为此自定义 owin cookie。 【参考方案1】:对于任何有同样问题的人,我发现我想做的事情是不可能的。 OWIN 更改了身份验证 cookie 的格式,与以前的 FormsAuthentication 没有向后兼容性。
我能够创建具有相同名称、MachineKey 加密等的 OWIN cookie,但内容不同,DNN 无法识别。
我将不得不在我的迁移中添加一个额外的阶段。 1. 使用 MVC 5 创建一个新应用,但使用旧的表单身份验证 2. 迁移所有模块后,我就可以迁移到OWIN了 3. 迁移到 ASP.NET 核心
【讨论】:
This link 可能会有所帮助 仍然在这方面花费了一些时间,只是发布了我到目前为止发现的内容。 这里是description of the OWIN Cookie format。我找到了另一篇关于如何change the format of the cookie 的文章,我终于能够创建一个被 DotNetNuke 识别并在 MVC 5 和 DNN 8 之间提供 SSO 的 cookie。唯一的问题是格式更改使 cookie 对 Identity 框架无用.以上是关于从 DotNetNuke 迁移到 ASP.NET Core的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET - IIS 7 - DotNetNuke - 如何强制浏览器重新加载站点的 CSS?
从 ASP.NET MVC 迁移到 ASP.NET Core MVC