Dotnetopenauth MVC将第三方和提供者作为单一代码库

Dotnetopenauth MVC将第三方和提供者作为单一代码库,dotnetopenauth,Dotnetopenauth,我一直在将项目:OpenIdRelyingPartyMvc和OpenIdProviderMvc转换为相同的代码库。我希望有一个网站,可以提供这两个功能 我列表中剩下的集成部分如下所示 案例1 OpenIdProviderMvc需要global.asax中指定的以下路由。但是,拥有这些路由会使OpenIdRelyingPartyMvc无法显示OpenID文本框和登录按钮。相反,它说“这是登录的OpenID标识页” 案例2 第二个区别是web.config中的表单身份验证 //-- OpenIdRe

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

我列表中剩下的集成部分如下所示

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

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

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

//-- OpenIdProviderMvc
<forms loginUrl="~/Account/LogOn" timeout="2880" name="ProviderMvcSession"/>
/--OpenIdRelyingPartyMvc
//--OpenIdProviderMvc
考虑到剩下的两种情况,我如何完成集成


谢谢

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

我找到的解决方案是:

  • “登录”的所有条款和操作更改为“登录”,“注销”更改为“注销”

  • 在主页上有一个指向/Account/Login的链接

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

  • 表单身份验证也是由(1)更改的/Account/Login版本(web.config)

  • 所有XRDS xml文档将分别命名为XRDS Party或XRDS Provider,并且还需要从视图中以xml的形式返回,而不需要其周围的布局。我只能通过使用另一个方法RenderPartialViewToString()来返回Content(),而不是返回View()

  • Log4net是您的朋友,尤其是在“找不到端点”错误时。它还帮助我发现返回的xml文档被xml包围

  • 最后,以上步骤不是将解决方案转换为单个代码库的完整指南。希望它能帮助你,并随时询问Qs

    //-- OpenIdRelyingPartyMvc
    <forms defaultUrl="~/Home" loginUrl="~/User/Login" name="OpenIdRelyingPartyMvcSession"/>
    
    //-- OpenIdProviderMvc
    <forms loginUrl="~/Account/LogOn" timeout="2880" name="ProviderMvcSession"/>