我正在使用ASP.NET MVC NerdDinner教程了解ASP.NET MVC和OpenId。
我想将NerdDinner中的身份验证系统替换为仅OpenId。我已经下载了最新的DotNetOpenAuth库,但我不知道如何将它们放在一起。任何人都可以帮助快速一步一步的教程吗?
这是否像在库中删除一样简单,或者是否也需要对应用程序进行重大更改?
答案 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解决方案中,
现在这种方式有限。我可以使用OpenID登录并与NerdDinner应用程序进行交互。这太酷了。但是某些功能尚不起作用。保存创建的晚餐不起作用,但它也不会挂起。我将不得不研究如何将AccountController中的一些成员资格功能迁移到UserController。我将更新这篇文章(欢迎提出建议和指示)。
答案 3 :(得分:1)
查看Samples / OpenIdRelyingPartyMvc目录(使用OpenId身份验证的简单ASP.NET MVC网站)。您可以从将web.config中的Home / User Controllers / Views和设置复制到项目中开始。我认为这是为您的网站提供OpenId身份验证的最快方式。然后,as Alexander Prokofyev said,Andrew Arnott's (DotNetOpenAuth/DotNetOpenId author) blog - Add OpenID login support to your ASP.NET MVC site
上有非常有用的帖子答案 4 :(得分:0)
codeplex上有一个会员入门套件,应该是你想要的。如果他们遵循微软认证惯例,他们都应该遵循提供者模型(阅读它)。