【问题标题】:DotNetOpenAuth and X-XRDS-Location headerDotNetOpenAuth 和 X-XRDS-Location 标头
【发布时间】:2012-01-26 11:05:38
【问题描述】:

我正在玩 DotNetOpenAuth 示例,试图了解如何与 OpenID 正确集成。其中一个示例称为 OpenIdRelyingPartyMvc。它有两个代码部分,我不确定它们如何影响功能。

  • 在 Global.asax.cs 中:

    routes.MapRoute(
        "Default",                                              // Route name
        "{controller}/{action}/{id}",                           // URL with parameters
        new { controller = "Home", action = "Index", id = string.Empty });  // Parameter defaults
    
    routes.MapRoute(
        "Root",
        string.Empty,
        new { controller = "Home", action = "Index", id = string.Empty });
    

如果我删除映射“Route”的最后一行,似乎没有任何影响:映射“Default”似乎就足够了。为什么会有“Route”路线?

  • 在 HomeController.cs 中

    public class HomeController : Controller {
        public ActionResult Index() {
            Response.AppendHeader(
                "X-XRDS-Location",
                new Uri(Request.Url, 
                    Response.ApplyAppPathModifier("~/Home/xrds")).AbsoluteUri);
            return View("Index");
        }
    
        public ActionResult Xrds()
        {
            return View("Xrds");
        }
    }
    

如果我删除“AppendHeader”调用并测试示例,它仍然有效!我知道这个头文件就足够了,我只是不能让示例应用程序依赖它:它可以在没有设置的情况下工作。如果我在 Xrds 方法中设置断点,它永远不会被触发。

【问题讨论】:

    标签: dotnetopenauth


    【解决方案1】:

    global.asax.cs 中的路由可能是多余的。

    您要删除的 X-XRDS-Location 标头对于 OpenID 流并不是绝对必要的,但如果您在没有 out 的情况下发布依赖方应用程序,Yahoo! and other OpenID Providers may warn the user that your site is not legit

    您可以通过运行 OpenIdProviderWebForms 示例并使用该示例 OP 中的标识符登录到您的 RP 来在本地对此进行测试(从而观察正在执行的 Home/Xrds 操作)。登录时,OP会查询RP的XRDS,在确认登录的网页上会提示“RP验证”是成功还是失败。如果它成功了,你应该很高兴。

    【讨论】:

    • 谢谢你,安德鲁,我期待你的答复 :-) 现在我很清楚了。
    猜你喜欢
    • 2013-03-12
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    相关资源
    最近更新 更多