Spero di poter aggiungere un po 'di chiarezza aggiuntiva rispetto alle altre risposte poiché in realtà non spiegano cosa sta succedendo e questo non aiuterà la tua confusione.
Il primo, implementare il provider personalizzato che dal suono delle cose che hai fatto già, quindi mi limiterò a gettare su un piccolo frammento di codice e non voglio entrare in ulteriori dettagli qui:
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 */
}
Poi si configura il provider nel web.config avendo cura di compilare gli attributi che configurano il MembershipProvider di base:
<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>
la prossima po 'penso che stai overthinking, l'attuale tie-in per l'applicazione web . Mentre in un'app WebForms è necessario codificare il resto per conto proprio - il framework MVC fa il resto per te - tutto ciò che devi fare è aggiungere l'attributo [Authorize] al tuo metodo di azione e il framework controllerà se sei tu sei loggato e se non ti reindirizza alla pagina di accesso. La pagina di login troverete il vostro provider personalizzato, perché questo è ciò che è configurato nel web.config e registrerà l'utente in È possibile accedere alle informazioni relative l'utente connesso dei controller facendo riferimento alla utente oggetto:.
public class WhateverController : Controller
{
[Authorize]
public ActionResult WhateverAction()
{
ViewData["LoggedInAs"] = string.Format("You are logged in as {0}.", User.Identity.Name);
Return View();
}
}
Quindi questa azione richiede che l'utente abbia effettuato il login e presenti le informazioni dell'utente alla vista Whatever/WhateverAction.aspx per essere visualizzate sulla pagina.
Ok, questo ha senso - grazie per averlo chiarito. Non stavo mettendo insieme due e due. Sono ancora bloccato in questo stato d'animo di WebForms e non ho capito quando MVC lo fa per me e quando devo gestirlo per me stesso. – BobTheBuilder