2012-10-24 11 views
10

Sto costruendo un sito in cui il personale avrà una propria sezione del sito: example.com/jones, example.com/smith, ecc. Jones e smith sono gruppi di modelli con gli stessi modelli all'interno (usando Stash e Low Variables per tenerlo tutto ASCIUTTO). Alcuni utenti avranno esigenze diverse per la privacy. Da un lato la loro sezione sarà pubblica. Dall'altro lato, alcuni utenti dovranno amministrare chi può accedere al loro contenuto (usando gli amici di Solspace).Proteggere con password un gruppo di modelli ExpressionEngine

Tuttavia, nel mezzo di tale intervallo sono alcuni che vogliono solo proteggere contro qualsiasi persona a caso vedere il loro contenuto. Non voglio usare membri/gruppi di membri per gestirlo. Non voglio che i visitatori debbano registrarsi per vedere il contenuto. Un account membro condiviso è un'opzione, ma l'abbiamo escluso a causa di altri problemi (cosa succede se la password viene reimpostata, i commenti lasciati sotto lo stesso account, ecc.

Quello che vorremmo è proteggere con password il gruppo di template Lo staff può far sapere alle persone dove vedere la loro pagina e far sapere agli utenti qual è la password. Tutto questo è possibile a livello di server, ma è possibile consentire all'utente di gestire direttamente la password? minimizzare quanto abbiamo bisogno di avere le mani su admin di questo il meglio.Un campo personalizzato e un add on che permette questo tipo di sicurezza? Non ho visto nulla su Devot-ee i metodi sui forum non lo fanno Un po 'di longshot, ma ho pensato di chiedere

+0

FYI ... Ho provato a utilizzare l'approccio htaccess e htpasswd per richiedere una password su determinati gruppi di modelli. Tuttavia non sta funzionando. Questo funziona per le directory "reali", ma dal momento che EE in realtà non ha una cartella in cui l'URL indica che non funziona. example.com/private è in server_path/system/expressionengine/templates/default_site/private e non server_path/private – Doug

+0

Questo assolutamente può funzionare. Mi chiedo se il problema è di nascondere index.php. Hai provato ad attivare la password su example.com/index.php/private? – AllInOne

+0

il file htaccess viene inserito nella directory da proteggere. Per quanto ne so, non c'è un modo per metterlo da qualche altra parte e dirgli quali directory proteggere. È possibile indicare da dove consentire il traffico, ovvero consentire ad alcuni URL o domini di accedere ai contenuti, ma richiede la password da altri. – Doug

risposta

11

Dal momento che hai detto che non volevi essere legato ai conti membri effettivi e sono stati OK con l'utilizzo di un campo personalizzato per memorizzare una password modificabile ...

Sono recentemente fatto qualcosa di simile che proteggeva un gruppo di voci che utilizzano un campo personalizzato. È simile all'approccio descritto in questo articolo "Password Protected Content Made Simple". Ma invece di usare PHP nel template ho usato Mo' Variables. E invece di usare url_title ho usato un campo personalizzato (chiamato client_password di seguito).

Inoltre, ho utilizzato Session Variables plugin per verificare se l'utente era già "connesso" ai successivi caricamenti di pagina, impedendo loro di inserire la password ancora e ancora.

{!-- PASSWORD REQUIRED --} 
{if client_password != ""} 

    {!-- if passed show content and set session --} 
    {if post:password == client_password} 

     {!-- protected content here --} 
     {!-- set session --} 
     {embed='embeds/_set_session' entry_id="{entry_id}"} 

    {!-- if session is valid show content --} 
    {if:elseif "{exp:session_variables:get name='logged_in'}" == "{entry_id}"} 

     {!-- protected content here --} 

    {!-- if failed show login --} 
    {if:elseif post:password != "" AND post:password != client_password} 

     <div id="protected"> 
      <p>Incorrect password. Please try again.</p> 
      <br> 
      <form action="" method="post"> 
       <strong>Password</strong><br /> 
       <div> 
        <input name="password"> 
       </div> 
       <input type="submit" class="submit" value="submit"> 
      </form>    
     </div> 

    {!-- if first attempt show login and prompt --} 
    {if:else} 

     <div id="protected"> 
      <p>This page is password protected. Please provide the password.</p> 
      <br> 
      <form action="" method="post"> 
       <strong>Password</strong><br /> 
       <div> 
        <input name="password"> 
       </div> 
       <input type="submit" class="submit" value="submit"> 
      </form>    
     </div> 

    {/if} 

{!-- NO PASSWORD REQUIRED --} 
{if:else} 

    {!-- protected content here --} 

{/if} 
+0

sembra che potrebbe essere proprio quello di cui ho bisogno. Ci provo e ti faccio sapere come funziona. – Doug

+0

Ottimo! Felice di fornire suggerimenti più specifici o di chiarire se sarebbe utile. –

+0

Sareste in grado di mostrare il contenuto della vostra variabile Mo? Il mio php non è quasi all'altezza (mi sto facendo strada dal lato del design delle cose). – Doug

0

Sarò onesto, non sono sicuro se questo si adatta al tuo bisogni o no Non sta facendo clic che sarà, però, non ho mai provato prima e avrebbe bisogno di fare un salto per sapere con certezza che lo fa o non si adatta.

mi post è lo stesso che può aiutare voi o qualcun altro lungo la strada:

http://koivi.com/ee-entry-auth-dir/

0

hai guardato utilizzando l'opzione di autenticazione HTTP in Template Access Restrictions? Utilizza una password membro per l'autenticazione, ma non richiede che il membro sia effettivamente registrato.

Si dice "non si desidera utilizzare membri/gruppi di membri per gestirlo", ma poi si desidera "consentire all'utente di gestire direttamente la password" ... utilizzando sicuramente il sistema membro incorporato è il modo più semplice?

+0

Non voglio che i visitatori abbiano bisogno di un account membro, ma vorrebbero che il proprietario dei contenuti (che ha un account membro) possa gestire l'accesso ai propri contenuti. IE hanno impostato la password. Il problema con l'autenticazione HTTP è per gruppo membro. Ciò significa che avrei bisogno di richiedere account membri per tutti gli utenti o un account utente condiviso per tutti i visitatori da utilizzare per accedere al contenuto. In entrambi i casi, qualsiasi account utente in quel gruppo di membri può accedere a qualsiasi contenuto protetto con questo metodo. – Doug

5

ho voluto aggiornare questo con il codice che sto usando per ottenere .htaccess e htpasswd lavoro, per proteggere dal gruppo di template. Può essere usato allo stesso modo di Alex, ma è un approccio tutto o niente. Ha i suoi vantaggi e svantaggi, ma ha voluto condividerlo come opzione.

In primo luogo, sto utilizzando il comportamento del modello nativo: example.com/group/template/url_title. Voglio proteggere con password alcuni gruppi di modelli, ma al di fuori dei membri di EE e dei gruppi di membri. cioè un singolo utente e una password.

Il mio file .htaccess si presenta così (da http://perishablepress.com/enable-file-or-directory-access-to-your-htaccess-password-protected-site/):

# We set some variables, matching URL's for which we do not wish to active 
# the password protection 
SetEnvIf Request_URI "^/privategroup.*$" private 

# Setup the password protection 
AuthName "Password Needed" 
AuthGroupFile /dev/null 
AuthType Basic 
AuthUserFile /Users/user/Sites/example/.htpasswd 
Require valid-user 

# Add the exceptions for matched URL's 
Order Deny,Allow 
Deny from env=private 
Satisfy any 

Il file htpasswd dovrebbe essere sopra Webroot, ma per la prova l'ho lasciato in Webroot. La riga AuthUserFile indica ad Apache dove trovare il file con i nomi utente e le password. Questo deve ... DEVE essere un percorso assoluto. Stavo usando un parente e ho ricevuto 500 errori. È necessario utilizzare il terminale o qualche altro strumento per creare questo file. http://developer.apple.com/library/Mac/#documentation/Darwin/Reference/ManPages/man1/htpasswd.1.html

Il risultato è che la directory richiede un nome utente e una password. In questo momento accetterà qualsiasi utente valido nel mio file htpasswd. Tuttavia posso cambiarlo specificando un utente specifico (richiede utente john tim lisa) o gruppi.

Là ce l'hai. Mantieni le persone fuori da gruppi di modelli specifici senza utilizzare alcuna funzionalità EE nativa.

Problemi correlati