una sistemas sistema operativos mecanismos datos control acceso c++ design-patterns idioms friend access-protection

c++ - sistemas - mecanismos de control de acceso a una base de datos



¿Cómo nombrar este patrón de protección de acceso orientado a claves? (4)

Hay otras formas de hacer esto, de una manera más general, utilizando la herencia. Aquí, la torta de clase funciona como el ojo de la cerradura y la llave. Aquí, cualquier clase que herede (también podría ser herencia estática) de Cake puede acceder al subconjunto de SomeClass definido como accesible en cake, y por supuesto, puede tener múltiples subconjuntos en múltiples clases diferentes.

class cake; class SomeClass { friend class cake; void foo(); }; class cake { void DoFoo(SomeClass& class) { class.foo(); } }; class lols : cake { // Now we can DoFoo(). };

Yo lo llamaría bloqueo y clave.

Aparentemente este patrón de protección de acceso orientado a claves :

class SomeKey { friend class Foo; SomeKey() {} // possibly non-copyable too }; class Bar { public: void protectedMethod(SomeKey); // only friends of SomeKey have access };

... aún no tiene un nombre conocido, por lo que me gustaría encontrar uno bueno para que podamos referirnos a él sin romper nuestras lenguas. Sugerencias?

Debería ser:

  • sucinto
  • Transmitir la intención de protección de acceso.
  • idealmente implica que no se requiere proxy (?)

Me gusta, en preferencia decreciente:

  • lenguaje de amigo de contraseña
  • idioma de la puerta de la llave de entrada
  • idioma de amigo puerta de entrada
  • idioma de la puerta de entrada amigo
  • idioma de amigo parcial
  • idioma de amigo restringido

Me alejé del esquema de asignación de claves / cerradura de la cerradura de clave al esquema de asignación de nombres, que creció en mí.


Propongo nombrarlo como el Idioma de la Insignia , que significa un token presentado a pedido y que demuestra la posesión de autoridad. Creo que esta es una metáfora mejor que las que giran en torno al término Clave en muchas de las otras respuestas aquí.

La ''clave'' ya está bastante sobrecargada en la terminología de la programación, combinando al menos las nociones de búsqueda y de acceso restringido. Además, las claves reales generalmente operan cerraduras individuales, no el conjunto de todas las cerraduras de un fabricante, y la clase aceptadora en este patrón es un conjunto no de cerraduras sino de entidades autoprotectoras a las que se les pide que realicen acciones.

La "insignia" transmite el principio de que el token otorga autoridad a una clase completa de otras entidades, no solo a un solo objeto. El término puede depender demasiado de imágenes de la policía o de seguridad (¿centradas en los Estados Unidos?), Y consideré términos como Subpoena o Warrant , pero parecían demasiado centrados en la concesión de acceso por parte de terceros. De todos modos, los individuos con un tipo de credencial determinado pueden obligar a los comportamientos codificados de las clases de individuos que respetan esas insignias. Veo la interacción general de esta manera:

  • A: esta fiesta es muy ruidosa Baje su estéreo. (Presenta la placa)
  • B: Oh, está bien, oficial. (gemido)

SomeKey se parece un poco a un pase Backstage para ingresar a Bar :: protectedMethod. Así que cualquier cosa en esa área debería ser buena: el idioma del pasaporte, el idioma de la palabra clave, el idioma de la contraseña, el idioma VIP ... ¿un acceso con clase?