En mi aplicación Yii, deseo que mi jerarquía de autorización y reglas comerciales se escriban en código y quiero que mis usuarios, roles y permisos se almacenen en la base de datos. Esto separa mi lógica comercial (que debería ser código) de la información que debería usar (que deberían ser datos). Parece que Yii no es compatible con esto.¿Cuál es el motivo para tener reglas de autorización en la base de datos?
En Yii tiene la opción de poner su lógica de negocio en archivos (CPhpAuthManager) o en la base de datos (CdbAuthManager). De cualquier manera, está tratando su lógica comercial como datos; Yii recuperará la lógica de su empresa como cadenas y luego la ejecutará a través de un eval
, lo que parece una forma terrible de hacerlo.
¿Cuál es el motivo de esto?
¿Cómo puedo lograr el resultado que quiero?
¿Puede explicar esto mejor? ¿Por qué los bizRules deben estar en la base de datos? ¿Por qué no los configura en su código? –
Como se mencionó anteriormente ... puede mover su lógica al código PHP, los escenarios anteriores describen un caso de uso con Roles asignados en masa (o Tareas u Operaciones). Si selecciona Acceder() a un elemento como 'CanEditOwnPost', deberá verificar si la publicación * actual * pertenece al usuario, esto no se puede hacer con una entrada 'estática'. Haga el control en el código PHP y asigne el elemento, luego ... o agregue un bizRule a su base de datos, que hace esta comprobación por usted. – schmunk
Todavía no tiene sentido ya que el código en la base de datos se evalúa. Sería mejor si esto estuviera en un controlador o algo así. –