2011-01-17 11 views
1

Ich habe FBA (Claim Based Authentication) auf Sharepoint 2010 implementiert. Folgende sind implementiert.FBA am Sharepoint 2010

  • Benutzerdefinierte Login-Seite
  • Benutzerdefinierte Log-in Seite
  • Passwort Recovery-Seite (ForgetPassword.aspx)
    In ForgetPassword Seite Benutzer aufgefordert wird, ihre E-Mail-Adresse einzugeben, sie verwendet, während Anmelde- und in code behind Ich verwende diese E-Mail, um den Benutzernamen mithilfe der Membership.GetUserNameByEmail-Funktion abzurufen und diesen Benutzernamen dann an die Membership.GetUser-Funktion zu übergeben, damit die Benutzeranmeldeinformationen per E-Mail gesendet werden.

Aber jetzt wirft der Code als Ausnahme mit der Aussage "Die Funktion ist nicht implementiert". Ich frage mich; Ich verwende keine benutzerdefinierte Datenbank, für die ich einen benutzerdefinierten Mitgliedschaftsanbieter erstellen musste. Warum bekomme ich diesen Fehler? Lassen Sie mich wissen, wenn jemand eine Ahnung hat oder ein ähnliches Problem hat. Vielen Dank.
Grüße, Paddy

+0

Sie in der regulären SQL-Datenbank gespeichert werden, die erstellt wird. Obwohl das Passwort als Hash gespeichert ist, kann ich mich erfolgreich anmelden. Das Problem ist, wenn ich versuche, den Benutzernamen unter Verwendung der E-Mail-Adresse zu erhalten, die vom Benutzer "string textUserName = Membership.GetUserNameByEmail (txtemailid.Text);" es wirft einen Fehler, den ich oben erwähnt habe. Danke Paddy – Paddy

+1

Ich habe keinen benutzerdefinierten Mitgliedschaftsprovider erstellt. Ich habe "System.Web.Security" als verwenden und beim Laden der Seite habe ich alle diese Parameter überprüft und wenn der Benutzer korrekte E-Mail-ID angegeben, ich möchte das Passwort zurücksetzen und senden Sie dies an den Benutzer mit MembershipUser.ResetPassword(). Ich hoffe ich habe deine Frage richtig verstanden. Danke Paddy – Paddy

+0

Paddy

Antwort

1

Wenn FBA für Sharepoint 2010 konfiguriert ist, zwei Mitgliedschaftsanbieter in der web.config-Datei definiert sind - Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider (in der Regel namens i) und System.Web.Security.SqlMembershipProvider (FBAMembership in diesem Fall genannt). Der standardmäßige Mitgliedschaftsanbieter muss auf den ersten festgelegt werden (d. H. SharePoint beansprucht einen), damit die FBA-Authentifizierung ordnungsgemäß funktioniert.

Wenn die Zeile Membership.GetUserNameByEmail(...) ausgeführt wird, wird der Standardmitgliedschaftsanbieter verwendet, und als Ergebnis wird 10 aufgerufen. MSDN sagt, dass diese Methode für den internen Gebrauch reserviert ist und nicht direkt aus Ihrem Code und entsprechend dem Kommentar in der Community Content Abschnitt NotImplementedException Abschnitt verwendet werden soll.

Sie müssen eine Instanz des SqlMembershipProvider-Anbieters aus der Membership.Providers-Sammlung abrufen und dann die GetUserNameByEmail-Methode aufrufen, die diese Instanz verwendet.


ich Präfixe verwenden, wenn Anbieter in der web.config Konfiguration der Datei und die sie wie folgt ab:

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

Hallo Marek Haben Sie einen Beispielcode, der den letzten oben erwähnten Absatz unterstützt – Paddy

+0

@Paddy Ich habe die Antwort aktualisiert - lassen Sie mich wissen, wenn Sie das brauchen –

+0

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