Mit Custom MembershipProvider, ohne ein Login-Steuerelement in ASP.NET
Wir haben eine benutzerdefinierte MembershipProvider
im ASP.NET
. Nun gibt es 2 mögliche Szenario kann der Benutzer validiert werden:
-
Benutzer-login via
login.aspx
Seite durch Eingabe von Benutzername/Passwort. Ich habe verwendet, Login-Steuerelement und verknüpft es mit derMyMembershipProvider
. Diese arbeitet völlig in Ordnung. -
Einen Authentifizierungs-token übergeben wird über eine URL im query string der form einer anderen web-sites. Für diese habe ich eine überlastung in
MembershipProvider.Validate(string authenticationToken)
, die eigentlich für die Validierung der Benutzer. In diesem Fall können wir nicht verwenden, die Login-Steuerelement. Nun, wie kann ich die gleichenMembershipProvider
um den Benutzer zu überprüfen, ohne tatsächlich mit der Login-Steuerelement? Ich versuchte zu rufenValidate
manuell, aber das ist nicht die Unterzeichnung der Benutzer in.
Hier ist das code-snippet bin ich mit
if (!string.IsNullOrEmpty(Request.QueryString["authenticationToken"])) {
string ticket = Request.QueryString["authenticationToken"];
MyMembershipProvider provider = Membership.Provider as MyMembershipProvider;
if (provider != null) {
if (provider.ValidateUser(ticket))
//Login Success
else
//Login Fail
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem die Validierung erfolgreich ist, müssen Sie zum anmelden den Benutzer durch Aufruf von FormsAuthentication.Authentifizierung: http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.authenticate.aspx
EDIT: Es ist FormsAuthentication.SetAuthCookie:
http://msdn.microsoft.com/en-us/library/twk5762b.aspx
Auch umleiten die Benutzer zurück, wo er wollte gehen, rufen: FormsAuthentication.RedirectFromLoginPage: http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.redirectfromloginpage.aspx
link-text
Können Sie Ihre eigenen
FormsAuthenticationTicket
wenn die Validierung erfolgreich ist.Etwas wie dieses;
Du Recht, im Falle der Speicherung der auth-Daten als cookie direkt. Aber mit einer starken hash-Funktion (z.B. MD5 + SHA1) ist toll und sicher.
By the way, wenn Sie sessions verwenden (die auch nur einen hash-cookie) Sie befestigen konnte auth-Daten zu.