Подтвердить что ты не робот

Запрос на учебное пособие для добавления поддержки Openid в приложение NerdDinner ASP.NET MVC

Я ищу информацию об ASP.NET MVC и OpenId, используя учебник ASP.NET MVC NerdDinner.

Я хотел бы заменить систему аутентификации в NerdDinner только OpenId. Я загрузил последние библиотеки DotNetOpenAuth, но я не уверен, как собрать все это вместе. Может ли кто-нибудь помочь с быстрым пошаговым руководством?

Это так же просто, как удаление в библиотеке или существенные изменения, необходимые для приложения?

4b9b3361

Ответ 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();

Ответ 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/