Pregunta

Mi aplicación tiene parte de usuario y / parte del administrador. Hay 2 modelos de cuenta (como un cliente) y de administración, y deben autenticar la cuenta de administrador y por separado. Los administradores no deben tener acceso a una parte de la cuenta y las cuentas no deben tener acceso a área de administración. ¿Hay alguna solución para mí o yo debería escribir 2 aplicaciones diferentes para los usuarios y los administradores y luego esperar a merb 1.1 y montarlos de alguna manera en 1 aplicación? ¿Alguna idea?

¿Fue útil?

Solución

pregunta parece muy interesante para mí, `ve tenían mismos problemas al principio. Por lo tanto, puedo sugerir soluciones diferentes de los que puede seleccionar uno depende de la estructura de su aplicación.

  1. Si todos sus usuarios pertenece a una clase, pero tiene campo especial (como UserClass = (: cliente,: moderador, admin, etc.) `ll tener un mínimo de modificaciones de aplicaciones, simplemente marque el parámetro clase de usuario en sus controladores / puntos de vista. Creo que no es una buena idea para usted.

  2. Las mejores prácticas - utilizar estrategias de autenticación Merb. Es mecanismo muy flexible, para que pueda seleccionar clases que desea trabajar.

Por ejemplo, `ll tener 2 estrategias básicas: clientAuth, AdminAuth. Ambos se utilizan diferentes clases de usuario (cliente), admin. Todo lo que necesitas - crear el archivo de estrategia personalizada y luego conectarlo al router como esto:

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

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

O bien, puede utilizar la autenticación dentro del controlador:

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

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

Además, incluso se puede utilizar sólo un controlador para la autenticación para ambas clases utilizando tanto las estrategias como esta:

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

El hecho de que haya configurado diferentes clases de autenticación (Admin, Cliente) para sus estrategias de usted será capaz de obtener información al respecto: session.user.class (que es un método básico de rubí para averiguar el nombre de la clase de objeto)

Aquí hay algunos enlaces útiles:

  1. http://www.slideshare.net/hassox/merb-auth-presentation
  2. http://merbunity.com/tutorials/19
  3. http://www.slideshare.net/carllerche/merb -pluming-la-router presentación
  4. http :? //merbivore.com/documentation/1.0/doc/rdoc/merb-auth-core-1.0/index.html a = C00000025 y name = Estrategia
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top