Asp.net mvc 向NerdDinner ASP.NET MVC应用程序添加Openid支持的教程请求
我希望通过ASP.NET MVC NerdDinner教程了解ASP.NET MVC和OpenId 我想将NerdDinner中的身份验证系统替换为仅OpenId。我已经下载了最新的DotNetOpenAuth库,但我不知道如何将它们组合在一起。有人能帮助我们快速地一步一步地学习教程吗Asp.net mvc 向NerdDinner ASP.NET MVC应用程序添加Openid支持的教程请求,asp.net-mvc,dotnetopenauth,nerddinner,Asp.net Mvc,Dotnetopenauth,Nerddinner,我希望通过ASP.NET MVC NerdDinner教程了解ASP.NET MVC和OpenId 我想将NerdDinner中的身份验证系统替换为仅OpenId。我已经下载了最新的DotNetOpenAuth库,但我不知道如何将它们组合在一起。有人能帮助我们快速地一步一步地学习教程吗 这就像放入库一样简单,还是需要对应用程序进行重大更改?codeplex上有一个会员入门工具包,这应该是您需要的。如果它们遵循microsoft身份验证约定,则它们都应该遵循提供程序模型(请仔细阅读) 不是Nerd
这就像放入库一样简单,还是需要对应用程序进行重大更改?codeplex上有一个会员入门工具包,这应该是您需要的。如果它们遵循microsoft身份验证约定,则它们都应该遵循提供程序模型(请仔细阅读)
不是NerdDinner指定的,但对于那些希望在ASP.NET MVC应用程序中实现OpenId支持的用户来说可能很有用:
//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();
好吧,所以我得到了这种工作! 答案是以下答案的组合,再加上一些控制器和视图的混乱 首先,然后导航到samples目录,在那里可以找到OpenIdRelayingPartyMvc代码。 在我的书呆子式解决方案中
- 我添加了对DotNetOpenAuth程序集的引用
- 添加了一个新的“UserController”,并从示例的UserController复制了代码
- 添加了正确的using语句,并更改了命名空间以反映NerdDinner.Controllers
- 从示例中重新创建类似的“用户”视图,对其进行适当更改以反映站点主内容id李>
- 在主控制器下添加了一个xrds视图。(还不确定这有什么作用)
- 更改了索引并在HomeController中添加Xrds ActionResult方法以反映示例
- 更改了web.config文件(在根文件夹中)的Authenticate部分,以将登录路径更改为新的UserController和登录方法
- 更改“LogOnUserControl”操作链接以指向新的UserControl以及“Login”和“Logout”方法
- 使用直接调用登录功能的各种视图
目前,这种方法的效果有限。我可以使用OpenID登录NerdDinner应用程序并与之交互。所以这很酷。但是,有些功能还不起作用。保存创建的晚餐不起作用,但也不会挂起。我必须研究如何将AccountController中的一些成员资格功能迁移到UserController。我将更新这篇文章(欢迎提出建议和建议) 小心这一点。它已经过时好几个月了,甚至不再进行开箱即用的编译。希望项目负责人很快会修改它。我已经下载了代码并通读了说明,但仍然不清楚它们是如何结合在一起的。NerdDinner示例具有默认AccountController。认证和成员资格服务包含在AccountController中。上面的代码是否需要合并到该控制器中?上面的代码使用一个名为UserController的控制器。这基本上是AccountController的替代品。您只需要更新链接或路由以相应地指向它。此示例似乎使用的是dotnetopenid包,而不是取代它的较新的dotnetopenauth包。