2011-01-17 8 views
1

Я реализовал FBA (аутентификация на основе утверждений) на Sharepoint 2010. Последующие реализованы.FBA на Sharepoint 2010

  • Пользовательские Войти Страница
  • Пользовательские Вход в систему Страница
  • Восстановление пароля страница (ForgetPassword.aspx)
    В странице пользователя ForgetPassword просят ввести свой адрес электронной почты, они используются во время входа в систему и код позади Я использую это письмо, чтобы получить UserName, используя функцию Membership.GetUserNameByEmail, а затем передав это имя пользователя функции Membership.GetUser, чтобы получить учетные данные пользователя для отправки по почте.

Но теперь код выбрасывается как исключение, говоря «Функция не реализована». Мне интересно; Я не использую какую-либо пользовательскую базу данных, для которой я должен был создать пользовательский поставщик членства. Тогда почему я получаю эту ошибку. Дайте мне знать, есть ли у кого-нибудь подсказка или столкнулись с подобной проблемой. Благодарю.
С уважением, Рисовые

+0

Они хранятся в обычной базе данных SQL, который получает создан. Хотя пароль хранится как хэшированный, я могу войти в систему успешно. Проблема в том, что я пытаюсь получить имя пользователя, используя адрес электронной почты, введенный пользователем «string textUserName = Membership.GetUserNameByEmail (txtemailid.Text);» он выдает ошибку, о которой я упомянул выше. thanks Paddy – Paddy

+1

Я не создал пользовательского поставщика членства. Я включил «System.Web.Security» в качестве использования и на загрузке страницы. Я проверяю все эти параметры, и если пользователь предоставил правильный идентификатор электронной почты, я хочу сбросить пароль и отправить его пользователю с использованием MemberhipUser.ResetPassword(). Надеюсь, я правильно понял ваш вопрос. Спасибо Paddy – Paddy

+0

Paddy

ответ

1

Когда FBA сконфигурирован для SharePoint 2010, два членских провайдеров определяются в файле web.config - Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider (обычно называется я) и System.Web.Security.SqlMembershipProvider (названный FBAMembership в данном случае). Поставщик членства по умолчанию должен быть установлен первым (например, одним из требований SharePoint), чтобы проверка подлинности FBA работала должным образом.

Когда выполняется строка, содержащая Membership.GetUserNameByEmail(...), используется поставщик членства по умолчанию, и в результате вызывается SPClaimsAuthMembershipProvider.GetUserNameByEmail. MSDN говорит, что этот метод зарезервирован для внутреннего использования и не предназначен для использования непосредственно с вашего кода и в соответствии с комментарием в Содержимое Сообщества раздел он выбрасывает NotImplementedException.

Вам необходимо получить экземпляр поставщика SqlMembershipProvider из коллекции Membership.Providers, а затем вызвать метод GetUserNameByEmail с использованием этого экземпляра.


Я использую префиксы при настройке поставщиков в файле web.config и получить их так:

string applicationNamePrefix = "fbaProvider_"; 
MembershipProvider fbaProvider; 

foreach (MembershipProvider provider in Membership.Providers) 
{ 
    if (provider.ApplicationName.StartsWith(applicationNamePrefix, StringComparison.InvariantCultureIgnoreCase)) 
    { 
     fbaProvider = provider; 
    } 
} 

throw new InvalidOperationException("Appropriate provider was not found."); 
+0

Привет Марек , У вас есть образец кода, который поддерживает последний абзац, упомянутый выше. – Paddy

+0

@Paddy Я обновил ответ - дайте мне знать, если это то, что вам нужно. –

+0

@Marek ... Thx a ton !!!! – Paddy

Смежные вопросы