0

Прежде всего. Я полный новичок OAuth. Это будет мой первый удар, и все становится волосатым ...Приложение без БД: вы должны вызвать метод «WebSecurity.InitializeDatabaseConnection», прежде чем вы вызовете какой-либо другой метод класса «WebSecurity»

Я пишу одностраничное приложение, используя Durandal & Web API. Пользователь должен иметь возможность входа в систему, используя любую социальную сеть. У меня нет доступа к базе данных, я должен позвонить незащищенному стороннему веб-сервису, который я использую на стороне сервера, и вам необходимо защитить использование OAuth.

Таким образом, мне удалось добавить файлы в мое решение, которое генерирует логин с помощью кнопки facebook contol/(создало новое веб-приложение MVC4 и выполнило ручную копирование и вставку всех связанных с auth файлов, обновленных загрузочных машин и т. Д. ..), и код, похоже, работает по большей части.

Когда facebook перенаправляет обратно

[AllowAnonymous] 
public ActionResult ExternalLoginCallback(string returnUrl) 
{ 
    AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(this.Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); 
    if (!result.IsSuccessful) 
    { 
     return this.RedirectToAction("ExternalLoginFailure"); 
    } 

    if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) 
    { 
     return this.RedirectToLocal(returnUrl); 
    } 

     //code removed for brevity  .... 
    } 

Я получаю ошибку, указанную как только следующая строка пытается выполнить.

OAuthWebSecurity.Login (result.Provider, result.ProviderUserId, createPersistentCookie ложь)

я удалил [InitializeSimpleMembership] атрибут из контроллера, так как у меня нет базы данных.

Пожалуйста, простите меня, если это глупый вопрос, когда-либо, но ...

Почему Войти терпят неудачу? Я имею в виду, что это не приложение, пытающееся войти в facebook, зачем ему нужна база данных? Или я правильно говорю, что могу удалить/заменить этот раздел кода, с помощью входа/авторизации на веб-сервисе, который я использую?

ответ

1

Не самый тупой вопрос когда-либо. Not by a long shot. Но вы получаете сообщение об ошибке, поскольку поставщик членства по-прежнему настроен на использование SimpleMembershipProvider, а OAuthWebSecurity будет использовать поставщик членства по умолчанию. Если вы не хотите использовать базу данных, вам нужно будет создать или найти другого поставщика членства.

EDIT: Я знаю, что вы сказали, что не имеют доступа к БД, но если вы можете использовать SQL Compact вы можете просто придерживаться по умолчанию SimpleMembershipProvider на (проверьте Hanselman-х blog) или DevArt имеет SQLLite provider. Также у MemFlex Project есть поставщик RavenDb. Если ни одна из этих работ, я думаю, вам просто нужно написать свои собственные.

+0

hahaha .... +1 для связи. Любые альтернативные поставщики членства, о которых вы знаете, я могу использовать? –