Hoffentlich kann ich etwas mehr Klarheit über die anderen Antworten hinzufügen, da sie wirklich nicht erklären, was vor sich geht, was Ihrer Verwirrung nicht helfen wird.
First up, implementieren Ihre benutzerdefinierten Anbieter die aus dem Klang der Dinge, die Sie haben bereits getan, so dass ich nur ein wenig Code-Schnipsel werfen und nicht in weiteren Einzelheiten gehen Sie hier:
using System.Web.Security;
public class MyCustomMembershipProvider : MembershipProvider
{
public override bool ValidateUser(string username, string password)
{
if (username.Equals("BenAlabaster") && password.Equals("Elephant"))
return true;
return false;
}
/* Override all the other methods required to extend MembershipProvider */
}
Sie Grübeln, die tatsächliche tie-in, um Ihre Web-Anwendung
<membership defaultProvider="MyCustomMembershipProvider">
<providers>
<clear />
<add name="MyCustomMembershipProvider"
type="MyNamespace.MyCustomMembershipProvider"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="10"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
applicationName="/" />
</providers>
</membership>
das nächste Bit denke ich:
Dann konfigurieren Sie Ihren Anbieter in Ihrer web.config sicherstellen, dass die Attribute aufzufüllen, die die Basis MembershipProvider konfigurieren . Während Sie in einer WebForms-App den Rest für sich selbst codieren müssen - das MVC-Framework erledigt den Rest für Sie - müssen Sie lediglich das Attribut [Autorisieren] zu Ihrer Aktionsmethode hinzufügen, und das Framework prüft, ob Sie das tun Sie sind eingeloggt und leiten Sie nicht zur Anmeldeseite weiter. Die Login-Seite wird Ihre benutzerdefinierten Anbieter finden, weil das ist, was in der web.config konfiguriert ist, und wird in Ihrem Benutzer anmelden Sie Informationen über den angemeldeten Benutzer von Ihrem Controller durch Bezugnahme auf den Benutzer Objekt zugreifen können.
public class WhateverController : Controller
{
[Authorize]
public ActionResult WhateverAction()
{
ViewData["LoggedInAs"] = string.Format("You are logged in as {0}.", User.Identity.Name);
Return View();
}
}
Für diese Aktion ist also erforderlich, dass der Benutzer angemeldet ist und die Benutzerinformationen für die Ansicht Whatever/Whate- tAction.aspx auf der Seite anzeigt.
Okay, das macht Sinn - danke, dass du das geklärt hast. Ich habe einfach nicht zwei und zwei zusammen gesetzt. Ich bin immer noch in dieser WebForms Geisteshaltung gefangen und habe nicht herausgefunden, wenn MVC es für mich macht und wenn ich es für mich selbst handhaben muss. – BobTheBuilder