Pregunta

Creo que la respuesta es un inicio de sesión de administrador y luego comprobar si el usuario tiene una bandera de administración, sino también pensé en algunas otras preguntas relacionadas.

¿Es mejor tener una bandera admin (attr_protected) en la misma tabla de usuarios como los no administradores? o debería tener una tabla de usuarios de administrador?

¿Debo crear una aplicación de carriles separados para los usuarios administradores? Esto podría ser excesiva, ya que ambos tienen para acceder a la misma datbase (por no hablar de que podría ser un enorme dolor de configurar).

¿Alguna otra sugerencia? En este momento sólo hay que asegurar una página o dos, así que ni siquiera miraba en HTTP autenticación básica o implícita como una medida temporal (el contenido protegido no es realmente tan privada / importante). Pero ... No sé cómo implementar autenticación HTTP para acciones específicas, sólo he visto cómo ponerlo en práctica para evitar el acceso de directorio.

cualquier dirección y la discusión sería grande. Estoy seguro de que otros usuarios de desbordamiento de pila se beneficiarán de esta discusión.

Gracias!

¿Fue útil?

Solución

Ryan Bates tiene una gran serie de tres partes de Railscasts sobre este tema que se debe dar algunos elementos de reflexión:

También hay tres Railscasts sobre diferentes técnicas de autenticación:

Otros consejos

Estoy usando restful_authentication complemento para este propósito. Y es muy simple para restringir el acceso a cualquier controlador o cualquier otro método. Por ejemplo, en el controlador añadir esta función:

private
def authorized?
  user.admin?
end

o

private
def authorized?
  user.admin? if update? || create?
end

he definido administrador? método en mi modelo de usuario. También creé actualización? y crear? métodos que comprueban que acción fue llamado. En restful_authentication autorizado? método siempre se ejecuta cuando se accede a controlador.

Me gustaría poner todo en una sola aplicación y en una mesa (no crear usuarios y tabla de administración). Puede proteger la bandera admin en el controlador de los usuarios al permitir establecer este valor sólo para usuarios administradores existentes.

Creo que depende del tipo de administración.

Si la vista de sus administradores tendrán del sitio es lo mismo que un usuario de la normalidad, pero con privilegios adicionales, me gustaría ir con una bandera de administración. (O, como sus necesidades de expansión, una mesa de papeles de pleno derecho.) Esta es una situación en la que todo el mundo ve lo mismo, pero los administradores tienen acceso a diversas acciones (eliminar? Editar? Prohibición? Etc.) que los usuarios normales no lo hacen.

Si la vista de sus administradores necesitan es tremendamente diferente del lugar de lo normal, yo recomendaría una aplicación Rails completamente separada que tiene acceso a la misma base de datos. Por ejemplo, si los "administradores" son realmente ayudan a los empleados de escritorio que van a responder a las llamadas telefónicas o hacer frente a cuestiones de facturación, pueden tener completamente diferentes vistas de la base de datos (y quizás formas de editar los datos) que no están disponibles en la aplicación regular.

La desventaja de tener múltiples sitios es que es posible tener modelos (validaciones, asociaciones, etc.) salir de sincronización. La desventaja de tener un solo sitio es que usted puede terminar de insertar todo tipo de código feo "admin-si" en porciones previamente fáciles de entender de su sitio. ¿Qué problema es más fácil de manejar depende de sus necesidades.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top