Запрос на учебное пособие для добавления поддержки Openid в приложение NerdDinner ASP.NET MVC
Я ищу информацию об ASP.NET MVC и OpenId, используя учебник ASP.NET MVC NerdDinner.
Я хотел бы заменить систему аутентификации в NerdDinner только OpenId. Я загрузил последние библиотеки DotNetOpenAuth, но я не уверен, как собрать все это вместе. Может ли кто-нибудь помочь с быстрым пошаговым руководством?
Это так же просто, как удаление в библиотеке или существенные изменения, необходимые для приложения?
Ответы
Ответ 1
Как только вы загрузите dotnetopenid, загляните в каталог samples\RelyingPartyMvc. Существует образец, в котором они заменяют стандартную систему аутентификации MVC с помощью OpenID. Соответствующий код находится в контроллерах /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();
Ответ 2
Не задан NerdDinner, но может быть полезен тем, кто хочет реализовать поддержку OpenId в своем приложении ASP.NET MVC:
Ответ 3
Хорошо, так что я получил такую работу!
Ответ - это комбинация ответов ниже, плюс некоторые из них с контроллерами и представлениями.
Сначала загрузить DotNetOpenAuth, а затем перейти к каталогу образцов, где вы можете найти код OpenIdRelayingPartyMvc.
В моем решении NerdDinner
- Я добавил ссылку на сборку DotNetOpenAuth.
- добавлен новый "UserController" и скопирован в код из образца UserController
- добавил правильные операторы использования и изменил пространство имен, чтобы отразить NerdDinner.Controllers
- воссоздал аналогичные "пользовательские" представления из образца, соответствующим образом изменив их, чтобы отразить идентификаторы основного содержимого сайта.
- добавлено представление xrds под домашним контроллером. (не уверен, что это еще делает)
- изменил индекс и добавил методы Xrds ActionResult в HomeController, чтобы отобразить образец.
- изменил файл web.config(в корневой папке) Раздел Authenticate, чтобы изменить путь входа в новый метод UserController и Login
- Измените действие ActionLinks "LogOnUserControl", чтобы указать на новые методы UserControl и "Login" и "Logout".
- обманывать различные представления, которые непосредственно вызывают функцию входа в систему
Сейчас это работает ограниченным образом. Я могу войти в систему и взаимодействовать с приложением NerdDinner с OpenID. Так что круто. Однако некоторые функции еще не работают. Сохранение созданного ужина не работает, но оно не виснет. Мне нужно будет изучить, как перенести некоторые функции членства в AccountController на UserController. Я обновлю это сообщение (приветствуются предложения и указатели).
Ответ 4
Посмотрите на образец Samples/OpenIdRelyingPartyMvc (простой веб-сайт ASP.NET MVC с использованием аутентификации OpenId). Вы можете начать с копирования Home/User Controllers/Views и настроек из web.config в ваш проект. Я считаю, что это самый быстрый способ предоставить аутентификацию OpenId на вашем сайте. Затем как сказал Александр Прокофьев, есть очень полезный пост в Andrew Arnott (DotNetOpenAuth/DotNetOpenId автор) блог - Добавить поддержку входа OpenID на ваш сайт MVC ASP.NET
Ответ 5
Существует набор стартового набора для членства в кодексе, который должен быть тем, что вы ищете. Они должны следовать за моделью поставщика (читать дальше), если они следуют соглашению об аутентификации Microsoft.
http://mvcmembership.codeplex.com/