2017-04-02 341 views
3

我有一个基于DNN(一堆DNN模块)的应用程序,并希望逐渐将此应用程序迁移到纯ASP.NET内核。 (远离DNN) 我只依赖于DNN用户管理和导航,其余的基本都是纯ASP.NET Web Forms。 (或更好:DNN中的网页用户控制)从DotNetNuke迁移到ASP.NET Core

该计划是创建一个全新的应用程序(不同的子域),并首先将我的用户管理迁移到.NET Core Identity。用户将通过新应用程序登录,并且需要在迁移期间在核心应用程序和DNN之间切换。我想使用基于身份的新机制,并且必须保持用户与基于DNN成员资格的表同步,直到我可以弃用最后一个DNN模块。

来自:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity 看来,身份创建自己的cookie与DNN完全不同。 有谁知道创建一个共享cookie的方法,可以让用户从旧应用移动到新应用而无需登录两次? 还是有更好的方法来实现这个功能?

UPDATE: 做更多的研究,在这一点上,似乎更有意义,在2个阶段分裂这个项目了: 1.使用MVC 5(稳定) 2.迁移MVC 5的新应用经过一段时间的应用程序到.NET Core

在这种情况下,使用OWIN身份验证的MVC 5仍然存在问题。是否有可能在MVC和DNN之间创建一个共享的auth cookie?

+0

看这个帖子: [链接](https://blogs.msdn.microsoft.com/webdev/2013/07/03/understanding-owin-forms-authentication-in-mvc-5/)看起来这不容易。 DotNetNuke需要一个非常特定的cookie,其中包含用MachineKey(来自web.config)加密的用户名。不知道是否可以为此定制owin cookie。 – Dabixi

回答

0

对于有同样问题的人,我发现我想做的事是不可能的。身份验证Cookie的格式已经通过OWIN进行了更改,并且没有向前兼容以前的FormsAuthentication。

我能够创建一个具有相同名称,MachineKey加密等的OWIN cookie,但内容不同,DNN不会识别这个。

我将不得不在我的迁移中添加额外的阶段。 1.创建一个新的应用与MVC 5,但使用旧窗体身份验证 2.所有的模块都迁移后,我就可以移动到OWIN 3.迁移到ASP.NET核心

+0

[此链接](https://github.com/aspnet/Security/issues/617)可能会有帮助 – Dabixi

+0

仍然花了一些时间在这个,只是张贴我迄今发现的东西。 – Dabixi

+0

这里是[OWIN Cookie格式的描述](http://tech.trailmax.info/2014/08/aspnet-identity-cookie-format/)。我发现了另一篇关于如何[更改cookie格式]的文章(http://www.alexboyang.com/2014/05/28/sso-for-asp-net-mvc4-and-mvc5-web-apps- shared-the-same-domain /),我终于可以创建一个由DotNetNuke识别的cookie,并在MVC 5和DNN 8之间提供SSO。唯一的问题是格式更改使Cookie对Identity框架无用。 – Dabixi