Domanda

Ho un backend comunità esistente e mi piace usare Umbraco per il mio livello di presentazione. Come posso implementare login / logout con autenticazione basata su form Net? (Non voglio utilizzare la funzionalità membro). Ho diversi tipi di utenti che ottengono di accesso a vari tipi di pagine. Come posso controllare questo? controllo utente?

È stato utile?

Soluzione

Umbraco utilizza il membro / ruolo di modello di provider ASP.NET per il suo sistema di appartenenza, ed è un passo abbastanza semplice per scambiare quello di default per la propria implementazione. Ho fatto questo in passato, quando ho voluto per autenticare i membri un archivio di Active Directory, ma non riesco a immaginare che sia molto più difficile per l'autenticazione con un database personalizzato.

Il vantaggio di questo è che si ottiene la piena integrazione con il sistema di appartenenza Umbraco, e utilizzando un provider ruolo personalizzato, redattori sarà in grado di limitare le pagine utilizzando il built in strutture di modifica delle pagine invece di dover collegare nella vostra controlli di propria sicurezza.

Si dovrebbe essere in grado di creare un semplice provider di appartenenze, estendendo la UmbracoMembershipProvider di classe e sovrascrivendo il ValidateUser metodo. Non ho fatto io stesso, ma so di altri che hanno.

Per autenticare contro un provider di ruoli personalizzato, è necessario creare una classe derivata da RoleProvider . I metodi sarete interessati a override sono -. IsUserInRole , FindUsersInRole , GetAllRoles e GetRolesForUser

Ecco un link ad uno Scott Guthrie post sul blog che ha più informazioni sul API fornitore di quanto tu possa mai bisogno di sapere, tra cui il codice sorgente per i provider di default.

Altri suggerimenti

Ho usato due approcci sui miei siti Umbraco. Entrambi gli approcci sono controlli utente per il login e il logout che sono responsabili per l'autenticazione di un utente con una soluzione personalizzata e di compensazione delle credenziali, rispettivamente. Ho anche aggiungere, per entrambi gli approcci, un attributo umbracoMembersOnly a qualsiasi tipo di documento che voglio proteggere.

Nel primo approccio, ho avuto ogni singolo assegno modello per vedere se l'utente è stato limitato da accesso. Per questo astratto, ho creato una classe siteuser con un'IsMember o un metodo isLoggedIn che era disponibile a livello di sito e potrebbe essere chiamato sia da una macro di controllo utente XSLT o. Il vantaggio di questo approccio è che ho potuto adattare messaggi personalizzati su ogni modello, piuttosto che limitarsi a fornire la pagina di negato stesso accesso.

Il secondo approccio - che è quello che preferisco ora - se per creare una macro Le autorizzazioni che è responsabile del controllo il diritto dell'utente di accedere a qualsiasi pagina (per esempio assegni per un attributo umbracoMembersOnly e, se è vero, verifica la presenza di una variabile di sessione ). Questa macro viene inclusa nel modello master, e così esegue su ogni modello. Se l'utente non dispone dell'autorizzazione per accedere alla pagina corrente, ho reindirizzare alla stessa pagina, ma con un? Alttemplate = RestrictedPage o simile allegato alla stringa di query. (Assicurarsi che le autorizzazioni controlli macro per un alttemplate = RestrictedPage nella stringa di query, o vi ritroverete in un ciclo infinito di reindirizzamenti.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top