MVC RelyingParty和Provider作为单一代码库

时间:2011-06-27 07:42:51

标签: dotnetopenauth

我一直在转换项目:OpenIdRelyingPartyMvc和OpenIdProviderMvc是相同的代码库。我希望有一个可以提供这两种功能的网站。

我的清单上留下的整合部分如下。

案例1
OpenIdProviderMvc需要global.asax中指定的以下路由。但是,使用这些路由会使OpenIdRelyingPartyMvc显示OpenID文本框和登录按钮。相反,它说“这是登录的OpenID身份页面”。

//-- OpenIdProviderMvc requires these, however, it breaks OpenIdRelyingPartyMvc 
routes.MapRoute(
    "User identities",
    "user/{id}/{action}",
    new {controller = "User", action = "Identity", id = string.Empty, anon = false});
routes.MapRoute(
    "PPID identifiers",
    "anon",
    new {controller = "User", action = "Identity", id = string.Empty, anon = true});

案例2
第二个区别是web.config中的表单身份验证。

//-- OpenIdRelyingPartyMvc
<forms defaultUrl="~/Home" loginUrl="~/User/Login" name="OpenIdRelyingPartyMvcSession"/>

//-- OpenIdProviderMvc
<forms loginUrl="~/Account/LogOn" timeout="2880" name="ProviderMvcSession"/>

如果给出这两个案例,我怎样才能完成整合?

谢谢

1 个答案:

答案 0 :(得分:0)

注意:目前我的要求是每个站点一个用户。

我找到的解决方案是:

  1. “登录”的所有条款和操作均更改为“登录”,“注销”更改为“退出”。

  2. 在主页上有一个链接到/ Account / Login

  3. 帐户/登录是在同一页面上同时具有用户登录和openid登录。还涉及将身份移动到帐户控制器并删除UserController / actions,因为这基本上只是一个经过身份验证的成员区域。

  4. 表单身份验证为/ Account / Login版本(web.config)由(1)更改

  5. 所有XRDS xml文档都要分别命名为XRDS-Party或XRDS-Provider,并且还需要从视图中以xml的形式返回,而不需要它们的周边布局。我只能通过而不是返回View(),在http://learningdds.com/public/ControllerExtension.cs

  6. 的另一个方法RenderPartialViewToString()的帮助下返回Content()。
  7. Log4net是你的朋友,特别是当“找不到端点”错误时。它还帮助我发现返回的xml文档被xml包围。

  8. 最后,上述步骤并不是将解决方案转换为单个代码库的完整指南。希望它会帮助你并随意问问。