【问题标题】:dotnetopenauth with asp.net mvc proving too frustrating to use带有asp.net mvc的dotnetopenauth证明太令人沮丧而无法使用
【发布时间】:2010-04-05 01:43:33
【问题描述】:

我一直在非常努力地在 asp.net mvc 中实现一个好的开放 id 解决方案 - 我转向的任何地方都是绝对的死路。 DotNetOpenAuth 太大了,到目前为止,我什至无法让它最简单、基本、绝对的干脆实现工作。

NerdDinner 有一个很有前途的实现,但不可能追踪所有相关文件和脚本。不幸的是,DotNetOpenAuth 网站实际上也没有任何有用的信息。

有没有人知道一种简单的方法来实现它,它实际上解释并详细说明了它是如何与某种选择器一起工作的?它被谈论的太多了,但我发现的所有东西都很难处理,以至于我的整个团队甚至都没有考虑它。

我们希望实现它类似于堆栈溢出的方式 - 使用一个选择器,如果需要,它会弹出一个登录页面。我意识到有很多代码需要为此完成,但一切都只是欢呼和赞美 dotnetopenauth,并没有真正教它。甚至示例项目也无法打开或编译。

它看起来像一个很棒的图书馆——但它真的不适合我。

编辑:现在我被指出了正确的起点,这变得更有意义了。如果你剪掉所有多余的部分并确切地知道基础在哪里,那就不会那么令人沮丧了。

【问题讨论】:

    标签: .net asp.net-mvc authorization openid dotnetopenauth


    【解决方案1】:

    我猜您可能从新的 DNOA 项目模板开始,其中包含大量代码和相当复杂的数据库方案,但其中大部分仅对 OAuth 和 OpenID 提供者是必需的,而不是依赖方。当您尝试弄清楚如何将其集成到现有解决方案中时,这可能会有点让人不知所措。

    我建议不要从项目模板开始,而是从示例项目开始,您可以在 Samples/OpenIdRelyingPartyMvc 文件夹中找到。为了尽量减少这种情况,对于一个非常基本的场景(例如,只是为了能够显示刚刚登录的用户的 OpenID URL),您所需要的只是在 UserControllerAuthenticate 方法中。就那么几行。

    在我的例子中,在很快开始基于这个示例之后,我深入挖掘了项目模板生成的代码,学习并应用了一些有用的改进,但仍然非常轻量级和简单,而且效果很好,所以对我来说太远了。

    顺便说一句:我认为 DNOA 不仅设计完美,代码记录良好,而且它也是我使用过的最受支持的开源库之一。我敢打赌 Andrew 会在 24 小时内在这里发表评论 ;-)

    【讨论】:

    • 我并不是说这个库有什么不好,但它确实对开发人员做了很多假设,考虑到 openid 的目的是要如此广泛地传播,所以得到它是非常令人困惑的习惯了。
    • 使用该示例确实效果更好。所以我的目标是用一个选择器来设置它——你会建议从那个样本到哪里设置一个非常简单的选择器?
    • Hrnm .. 我仍然对页面如何知道将用户发送到他们选择的提供商的登录位置感到迷茫......
    • DNOA 的最新下载已经包含一个选择器。我最终使用了这个选择器:code.google.com/p/openid-realselector 您只需要确保服务器端代码中表单字段的名称与 javascript 代码中使用的文本框的名称匹配。
    • 看,这就是我认为 DNOA 对于初学者来说有点过于复杂的地方。如果已经明确选择器只是一个客户端编写来美化显示,它会更容易闯入。说了这么多,我对 DNOA 印象非常深刻,因为我可以让 mvc 示例正常工作。非常感谢您的帮助!
    【解决方案2】:

    试试这个。 http://www.west-wind.com/Weblog/posts/899303.aspx.

    dotnetopenauth 包含一个示例 asp.net mvc 应用程序,它演示了它的工作原理。我在切换到 spring mvc 之前对其进行了评估,但能够根据示例代码中的逻辑开发一个功能性 POC。如果我没记错的话,您的视图包含一个将 openid 提交给控制器的文本框,并且控制器使用 dotnetopenauth api 将您重定向到开放 id 提供程序进行身份验证。重定向通过查询字符串包含指向您网站的 url,因此开放 ID 提供程序可以在您进行身份验证后将您重定向回来。当最终用户被重定向回您的站点并且您能够提取开放 ID 时,您的控制器将再次使用 dotnetopenauth api。我知道这只能解释你可能已经知道的事情,但就像我说的那样,我让它工作没有问题。发布您的代码。我在 vm 中编码并且无法再访问,但我现在再次下载它。这听起来像是不错的博客材料。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-17
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 2013-01-05
      • 1970-01-01
      • 2016-07-10
      • 1970-01-01
      相关资源
      最近更新 更多