Domanda

La mia applicazione ha parte degli utenti e / parte admin. Ci sono 2 modelli di account (come un cliente) e Admin, e dovrebbero autenticare l'account e admin separatamente. Gli amministratori non devono accedere da parte di account e conti non dovrebbero accedere all'area di amministrazione. C'è qualche soluzione per me o che avrei dovuto scrivere 2 diverse applicazioni per gli utenti e gli amministratori e quindi attendere che Merb 1.1 e montarli in qualche modo in 1 app? Tutte le idee?

È stato utile?

Soluzione

la tua domanda sembra molto interessante per me, il `VE ha avuto stessi problemi all'inizio. Quindi, posso suggerire soluzioni diverse da cui è possibile selezionare uno dipende la struttura app.

  1. Se tutti gli utenti appartiene ad una classe, ma ha campo speciale (come UserClass = (: client: moderatore,: admin, etc.) `ll avere minimo di modifiche app, basta controllare il parametro classe utente nel vostro controller / vista. Penso che non è una buona idea per voi.

  2. Le migliori pratiche - di utilizzare strategie di autenticazione Merb. E 'il meccanismo molto flessibile, in modo da poter selezionare le classi che si desidera lavorare.

Per esempio, si `ll avere 2 strategie di base: ClientAuth, AdminAuth. Entrambi utilizzeranno diverse classi utente (Client, Admin). Tutto ciò che serve - creare il file di strategia su misura e quindi collegarlo al router in questo modo:

authenticate(ClientAuth) do
  match('/profile').to(:controller => ProfileController)
end

authenticate(AdminAuth) do
  match('/admin').to(:controller => AdminController)
end

In alternativa, è possibile utilizzare l'autenticazione all'interno del controller:

class AdminController
  :before ensure_authenticated, :with => [AdminAuth]

  def index
     ... your stuff ...
  end
end

Inoltre, è anche possibile utilizzare un solo controller per l'autenticazione per entrambe le classi che utilizzano entrambe le strategie in questo modo:

class AdminController
  :before ensure_authenticated, :with => [AdminAuth, ClientAuth]
end

Il fatto di aver impostato le diverse classi di autenticazione (Admin, client) per le vostre strategie si sarà in grado di ottenere informazioni su di esso: session.user.class (si tratta di un metodo di rubino di base per scoprire il nome della classe di oggetti)

Ecco alcuni link utili:

  1. http://www.slideshare.net/hassox/merb-auth-presentation
  2. http://merbunity.com/tutorials/19
  3. http://www.slideshare.net/carllerche/merb -pluming-the-router-presentazione
  4. http :? //merbivore.com/documentation/1.0/doc/rdoc/merb-auth-core-1.0/index.html a = C00000025 & name = strategia
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top