代码之家  ›  专栏  ›  技术社区  ›  Blair Scott

集成AspDotNetStoreFront和SiteCore

  •  2
  • Blair Scott  · 技术社区  · 15 年前

    有没有人尝试过将aspdotnetstorefront和sitecore集成在一起?在过去的几天里,我一直在努力想办法让两个系统很好地配合在一起,但据我所知,这似乎不可行。到目前为止,我遇到了几个问题:

    • 两者之间的身份验证(AspDotNetStoreFront有自己的实现,SiteCore只使用/扩展.NET成员身份)
    • aspdotNetstorefront的主dll是当我被黄色屏蔽时堆栈跟踪中弹出的,但是该dll被模糊了,所以我无法确定问题是什么。

    最大的问题是,我们需要将现有的AspDotNetStoreFront应用程序保留为电子商务后端,并使用SiteCore执行其他所有操作。AspdotNetStorefront有一个CMS作为它的一部分,但它实际上不是一个可以接受的解决方案,除了基本的内容页面。

    有没有想过我该怎么办?

    编辑:

    我决定把这整件事分解成我目前面临的不同问题,并尽我所知有效地解决每一个问题。我将详细说明我在这里拥有的,然后在遇到新的时更新。

    问题1:两个系统之间的身份验证。

    如果你对表单认证票有足够的了解,这一点其实也不算太差,我当时不是很了解表单认证票,但是我学得很快。只要两个系统共享相同的加密信息,就可以很容易地使用下面接受的答案中所述的cookie在两个系统之间来回传递信息。另一个问题是,我需要将aspdotNetstorefront customer表中的customerguid设置为来自SiteCore用户表(标准ASP.NET成员资格)的用户ID。到目前为止,这种方法似乎工作得很好(目前我仍处于概念验证阶段)。

    如果你需要尝试的话,另一件要记住的事情是aspdotnetstorefront带有 web service 基本上你可以用来做任何你需要的事情。由于他们使用相同的加密密钥,我可以使用此服务更安全地登录店面,而不仅仅是传递明文密码(我必须自己编写方法,我不相信它是标准的,如果我弄错了,请告诉我)。尽管我怀疑这是一个巨大的交易,因为这一切都发生在服务器端。

    问题2:获取产品数据

    这个有点麻烦。前面提到的Web服务有一些问题,我在解决这些问题时遇到了困难。但是,由于数据库将在同一台服务器上,我只是决定,因为我真正需要的是价格和ID,所以我将继续在店面数据库中设置每个产品的productguid列,以匹配SiteCore数据库中相应项目的SiteCore项目ID。通过这种方式,我只需要一个快速查询来获取仅在少数地方使用的productID和价格信息。其他一切都将被安置在SiteCore中。

    如果有人有什么要添加的,请放心,据我从谷歌了解,实际上之前没有人这样做过,所以在这个特定主题上我很难找到资源。

    更新:

    集成实际上是可能的,我们的站点已经运行了一周半了,几乎没有集成相关的问题。这不是我推荐的在个人层面上做的事情,但事实上它是有可能实现的。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Adam    15 年前

    我知道AspDotNetStoreFront和其他CMS系统(但不知道SiteCore)。如果我正在接近这个目标,我可能会从简单的开始为SiteCore的“内容”页面创建一个自定义的URL结构,aspdnsf会直接指向SiteCore来处理。[可能替换ASPDNSF中现有的主题系统]。例如,一个URL(如www.domain.com/p-1234-aproductpage.aspx)将由aspdnsf处理,而www.domain.com/content/123/a-content-page将被发送到sitecore进行呈现。这是一个简单的web.config编辑。

    跨系统的安全共享应该可以跨相同的域进行,因为cookie信息是可用的(您应该能够使用aspdnsfcommon.dll在SiteCore中创建一些代码,并将httpContext.current.user强制转换为aspdotNetStoreRefrontprincipal类,以检测客户是否登录)。

    解决此问题的另一种方法是编写一个函数,该函数基于URL ID从数据库中检索SiteCore内容,然后编写一个aspdnsf xml模板,使用该函数基于URL检索此内容。例如,您可以在aspdnsf中创建一个自定义的url结构,例如www.domain.com/sc-1234-sitecore-content-item.aspx,它被发送到您的自定义代码;1234用作sitecore内容ID,XML模板检索内容并在屏幕上呈现。

    第二种方法的优点是,将SiteCore用于所有非产品内容管理,同时将活动应用程序保留在ASPDNSF中。还有一组设计模板和所有的安全问题。