zope.authentication proporciona una definición de los conceptos de autenticación para su uso en Zope Marco.
Documentación detallada
Soporte Logout
Cerrar apoyo está definido por una sencilla interfaz de ILogout:
& Nbsp; >>> from zope.authentication.interfaces importan ILogout
que tiene un solo método de 'desconexión'.
El uso actual de ILogout es adaptar un componente IAuthentication a ILogout Para ilustrar esto, vamos a crear una aplicación de cierre de sesión simple que se adapta IAuthentication:
& Nbsp; >>>adapter (IAuthentication)
& Nbsp; ...implementer (ILogout)
& Nbsp; ... clase SimpleLogout (objeto):
& Nbsp; ...
& Nbsp; ... def __init __ (self, auth):
& Nbsp; ... pase
& Nbsp; ...
& Nbsp; ... def logout (self, petición):
& Nbsp; ... print 'El usuario ha cerrado la sesión'
& Nbsp; >>> provideAdapter (SimpleLogout)
y algo que representa una utilidad de autenticación:
& Nbsp; >>>implementer (IAuthentication)
& Nbsp; ... clase de autenticación (objeto):
& Nbsp; ... pase
& Nbsp; >>> auth = Autenticación ()
Para llevar a cabo un cierre de sesión, nos adaptamos a auth ILogout y llamamos "logout":
& Nbsp; >>> logout = ILogout (auth)
& Nbsp; >>> logout.logout (TestRequest ())
& Nbsp; El usuario ha cerrado la sesión
Adaptador El 'NoLogout'
La clase:
& Nbsp; >>> from zope.authentication.logout NoLogout importación
Pueden registrarse como proveedor de repliegue de ILogout para componentes IAuthentication que no son otra cosa adaptable a ILogout. Método de cierre de sesión de NoLogout es un no-op:
& Nbsp; >>> NoLogout (auth) .logout (TestRequest ())
Interfaz de usuario Cerrar sesión
Debido a que algunos protocolos de autenticación no apoyan formalmente cierre de sesión, puede que no sea posible que un usuario cierra la sesión una vez que él o ella ha iniciado la sesión. En tales casos, no sería apropiado para presentar una interfaz de usuario para la sesión.
Debido a que el apoyo de cierre de sesión es sitio-configurable, Zope ofrece un adaptador que, al ser registrados, indica que el sitio está configurado para el cierre de sesión:
& Nbsp; >>> from zope.authentication.logout importación LogoutSupported
Esta clase simplemente sirve como una bandera, ya que implementa ILogoutSupported:
& Nbsp; >>> from zope.authentication.interfaces importan ILogoutSupported
& Nbsp; >>> ILogoutSupported.implementedBy (LogoutSupported)
& Nbsp; El verdadero
& Nbsp; >>> petición = objeto ()
& Nbsp; >>> ILogoutSupported.providedBy (LogoutSupported (petición))
& Nbsp; El verdadero
Términos Principales
Términos Principales se utilizan para apoyar interfaces de navegador para buscar las fuentes principales. Proporcionan acceso a las fichas y los títulos de valores. El director términos vista utiliza una utilidad de autenticación para obtener títulos principales. Vamos a crear una utilidad de autenticación para demostrar cómo funciona esto:
& Nbsp; >>> clase principal:
& Nbsp; ... def __init __ (self, id, título):
& Nbsp; ... self.id, self.title = id, título
& Nbsp; >>> from zope.interface implementador de importación
& Nbsp; >>> from zope.authentication.interfaces importan IAuthentication
& Nbsp; >>> from zope.authentication.interfaces importan PrincipalLookupError
& Nbsp; >>>implementer (IAuthentication)
& Nbsp; ... clase AuthUtility:
& Nbsp; ... data = {'Jim': 'Jim Fulton "," stephan': 'Stephan Richter'}
& Nbsp; ...
& Nbsp; ... def getPrincipal (self, id):
& Nbsp; ... title = self.data.get (id)
& Nbsp; ... si el título no es Ninguno:
& Nbsp; ... volver Principal (id, título)
& Nbsp; ... elevar PrincipalLookupError
Ahora tenemos que instalar la utilidad de autenticación:
& Nbsp; >>> from provideUtility importación zope.component
& Nbsp; >>> provideUtility (AuthUtility (), IAuthentication)
Necesitamos una fuente principal para que podamos crear una vista de ella.
& Nbsp; >>> from getUtility importación zope.component
& Nbsp; >>> clase PrincipalSource:
& Nbsp; ... def __contains __ (self, id):
& Nbsp; ... auth = getUtility (IAuthentication)
& Nbsp; ... probar:
& Nbsp; ... auth.getPrincipal (id)
& Nbsp; ... excepto PrincipalLookupError:
& Nbsp; ... return false
& Nbsp; ... else:
& Nbsp; ... devolver True
Ahora podemos crear una vista términos:
& Nbsp; >>> from PrincipalTerms importación zope.authentication.principal
& Nbsp; >>> términos = PrincipalTerms (PrincipalSource (), Ninguno)
Ahora podemos pedir a los términos para ver términos:
& Nbsp; >>> plazo = terms.getTerm ('stephan')
& Nbsp; >>> term.title
& Nbsp; "Stephan Richter '
& Nbsp; >>> term.token
& Nbsp; "c3RlcGhhbg__ '
Si nos preguntamos por un término que no existe, se obtiene un error de búsqueda:
& Nbsp; >>> terms.getTerm ('bob')
& Nbsp; El rastreo (most recent call last):
& Nbsp; ...
& Nbsp; LookupError: bob
Si tenemos una razón, podemos obtener el ID del principal para ello.
& Nbsp; >>> terms.getValue ('c3RlcGhhbg__')
& Nbsp; "stephan '
¿Qué hay de nuevo en esta versión:
- Se rompió la dependencia pruebas inapropiado en zope.component.nextutility.
- (Forward-compatibilidad con zope.component 4.0.0).
- Sustituido obsoleto uso zope.component.adapts con decorador zope.component.adapter equivalente.
- Sustituido obsoleto uso zope.interface.implements con decorador zope.interface.implementer equivalente.
- abandonado el soporte para Python 2.4 y 2.5.
Requisitos :
- Python
Comentarios que no se encuentran