请求将教程添加到NerdDinner ASP.NET MVC应用程序的教程

时间:2009-06-01 07:43:49

标签: asp.net-mvc dotnetopenauth nerddinner

我正在使用ASP.NET MVC NerdDinner教程了解ASP.NET MVC和OpenId。

我想将NerdDinner中的身份验证系统替换为仅OpenId。我已经下载了最新的DotNetOpenAuth库,但我不知道如何将它们放在一起。任何人都可以帮助快速一步一步的教程吗?

这是否像在库中删除一样简单,或者是否也需要对应用程序进行重大更改?

5 个答案:

答案 0 :(得分:14)

下载dotnetopenid后,请查看samples \ RelyingPartyMvc目录。有一个示例,他们用OpenID替换默认的MVC身份验证系统。相关代码位于Controllers / UserController.cs中。以下是Authenticate操作:

//Stage 1: Show form asking for Open ID identifier URL
var openid = new OpenIdRelyingParty();
if (openid.Response == null) {
    // Stage 2: user submitting Identifier
    Identifier id;
    if (Identifier.TryParse(Request.Form["openid_identifier"], out id)) {
            openid.CreateRequest(Request.Form["openid_identifier"]).RedirectToProvider();
    } else {
            ViewData["Message"] = "Invalid identifier";
            return View("Login");
            }
} else {
    // Stage 3: OpenID Provider sending assertion response
    switch (openid.Response.Status) {
        case AuthenticationStatus.Authenticated:
            FormsAuthentication.RedirectFromLoginPage(openid.Response.ClaimedIdentifier, false);
            break;
        case AuthenticationStatus.Canceled:
            ViewData["Message"] = "Canceled at provider";
            return View("Login");
        case AuthenticationStatus.Failed:
            ViewData["Message"] = openid.Response.Exception.Message;
            return View("Login");
    }
}
return new EmptyResult();

答案 1 :(得分:7)

不是NerdDinner特有的,但对于那些想要在其ASP.NET MVC应用程序中实现OpenId支持的人有用:

答案 2 :(得分:6)

好的,所以我得到了这种工作! 答案是以下答案的组合加上一些控制器和视图。

首先download DotNetOpenAuth然后导航到samples目录,在那里可以找到OpenIdRelayingPartyMvc代码。 在我的NerdDinner解决方案中,

  • 我添加了对DotNetOpenAuth程序集的引用
  • 添加了新的“UserController”并复制到示例的UserController
  • 的代码中
  • 添加了正确的using语句并更改了命名空间以反映NerdDinner.Controllers
  • 从示例中重新创建了类似的“用户”视图,并相应地更改它们以反映网站主要内容ID。
  • 在家庭控制器下添加了一个xrds视图。 (不知道这是做什么的)
  • 更改了索引并在HomeController中添加了Xrds ActionResult方法以反映样本。
  • 更改了web.config文件(在根文件夹中)验证部分以更改新UserController和登录方法的登录路径
  • 更改“LogOnUserControl”ActionLinks以指向新的UserControl以及“登录”和“注销”方法。
  • 查看直接调用登录功能的各种视图

现在这种方式有限。我可以使用OpenID登录并与NerdDinner应用程序进行交互。这太酷了。但是某些功能尚不起作用。保存创建的晚餐不起作用,但它也不会挂起。我将不得不研究如何将AccountController中的一些成员资格功能迁移到UserController。我将更新这篇文章(欢迎提出建议和指示)。

答案 3 :(得分:1)

查看Samples / OpenIdRelyingPartyMvc目录(使用OpenId身份验证的简单ASP.NET MVC网站)。您可以从将web.config中的Home / User Controllers / Views和设置复制到项目中开始。我认为这是为您的网站提供OpenId身份验证的最快方式。然后,as Alexander Prokofyev saidAndrew Arnott's (DotNetOpenAuth/DotNetOpenId author) blog - Add OpenID login support to your ASP.NET MVC site

上有非常有用的帖子

答案 4 :(得分:0)

codeplex上有一个会员入门套件,应该是你想要的。如果他们遵循微软认证惯例,他们都应该遵循提供者模型(阅读它)。

http://mvcmembership.codeplex.com/