zope.authentication Zope Framework kullanmak için kimlik doğrulama kavramların tanımını sağlar.
Detaylı Belgeler
Çıkış Destek
Çıkış destek basit bir arayüz ILogout ile tanımlanır:
& Nbsp; >>> zope.authentication.interfaces ILogout ithal gelen
bir tek 'çıkış' yöntemi vardır.
ILogout mevcut kullanımı, biz IAuthentication adapte basit bir çıkış uygulaması oluşturmak edeceğiz göstermek için ILogout bir IAuthentication bileşeni adapte etmektir:
& Nbsp; >>>adapter (IAuthentication)
& Nbsp; ...implementer (ILogout)
& Nbsp; ... Sınıf SimpleLogout (nesne):
& Nbsp; ...
& Nbsp; ... def __init __ (self, auth):
& Nbsp; ... pas
& Nbsp; ...
& Nbsp; ... def çıkış (kendini, istek):
& Nbsp; ... print 'Kullanıcı dışarı oturum'
& Nbsp; >>> provideAdapter (SimpleLogout)
ve bir şey bir doğrulama programı temsil etmek:
& Nbsp; >>>implementer (IAuthentication)
& Nbsp; ... Sınıf Kimlik (nesne):
& Nbsp; ... pas
& Nbsp; >>> auth = Kimlik ()
Bir logout gerçekleştirmek için, biz ILogout için auth uyum ve 'çıkış' diyoruz:
& Nbsp; >>> çıkış = ILogout (auth)
& Nbsp; >>> logout.logout (TestRequest ())
& Nbsp; Kullanıcı dışarı oturum
'NoLogout' adaptör
Sınıf:
& Nbsp; >>> zope.authentication.logout ithalat NoLogout gelen
Aksi ILogout adapte olmayan IAuthentication bileşenleri için ILogout bir çare sağlayıcısı olarak tescil edilebilir. NoLogout en çıkış yöntemi, bir hayır-op:
& Nbsp; >>> NoLogout (auth) .logout (TestRequest ())
Kapat Kullanıcı Arayüzü
Bazı kimlik doğrulama protokolleri resmen logout desteği yok Çünkü o giriş kez bir kullanıcı çıkış için, mümkün olmayabilir. Böyle durumlarda, dışarı oturum açmak için bir kullanıcı arayüzü sunmak uygunsuz olurdu.
Çıkış desteği sitesi yapılandırılabilir olduğundan, Zope kayıtlı olduğunda, site logout için yapılandırılmış olduğunu gösterir bir adaptör sağlar:
& Nbsp; >>> zope.authentication.logout import LogoutSupported
O ILogoutSupported uygulayan gibi Bu sınıf sadece bir bayrak olarak hizmet vermektedir:
& Nbsp; >>> zope.authentication.interfaces ILogoutSupported ithal gelen
& Nbsp; >>> ILogoutSupported.implementedBy (LogoutSupported)
& Nbsp; Doğru
& Nbsp; >>> isteği = nesne ()
& Nbsp; >>> ILogoutSupported.providedBy (LogoutSupported (istek))
& Nbsp; Doğru
Anapara Şartlar
Temel Terimler temel kaynakları aramak için tarayıcı arayüzleri desteklemek için kullanılır. Onlar değerler için jeton ve başlıklar erişim sağlar. Temel terimler görünümü temel başlıkları almak için bir kimlik doğrulama programı kullanır. Bu nasıl çalıştığını göstermek için bir kimlik doğrulama programı yaratalım:
& Nbsp; >>> sınıf Müdürü:
& Nbsp; ... def __init __ (self, id, başlık):
& Nbsp; ... self.id, self.title = id başlık
& Nbsp; >>> zope.interface ithalat uygulayıcısı gelen
& Nbsp; >>> zope.authentication.interfaces IAuthentication ithal gelen
& Nbsp; >>> zope.authentication.interfaces PrincipalLookupError ithal gelen
& Nbsp; >>>implementer (IAuthentication)
& Nbsp; ... Sınıf AuthUtility:
& Nbsp; ... veri = {'jim': 'Jim Fulton', 'stephan': 'Stephan Richter'}
& Nbsp; ...
& Nbsp; ... def getPrincipal (öz, id):
& Nbsp; ... title = self.data.get (id)
& Nbsp; ... başlık Yok değilse:
& Nbsp; ... dönüş Anapara (id, başlık)
& Nbsp; ... PrincipalLookupError yükseltmek
Şimdi doğrulama programı yüklemeniz gerekir:
& Nbsp; >>> zope.component ithalat provideUtility gelen
& Nbsp; >>> provideUtility (AuthUtility () IAuthentication)
Biz ondan bir görünüm oluşturabilirsiniz böylece bir temel kaynak gerekiyor.
& Nbsp; >>> zope.component ithalat getUtility gelen
& Nbsp; >>> sınıf PrincipalSource:
& Nbsp; ... def __contains __ (self, id):
& Nbsp; ... auth = getUtility (IAuthentication)
& Nbsp; ... deneyin:
& Nbsp; ... auth.getPrincipal (id)
& Nbsp; ... PrincipalLookupError hariç:
& Nbsp; ... Yanlış dönüş
& Nbsp; ... else:
& Nbsp; ... Doğru dönüş
Şimdi bir terim görünüm oluşturabilirsiniz:
& Nbsp; >>> zope.authentication.principal ithalat PrincipalTerms gelen
& Nbsp; >>> terimleri = PrincipalTerms (PrincipalSource (), Yok)
Şimdi terimleri terimler için görüntülemek isteyebilirsiniz:
& Nbsp; >>> dönem = terms.getTerm ('stephan')
& Nbsp; >>> term.title
& Nbsp; 'Stephan Richter'
& Nbsp; >>> term.token
& Nbsp; 'c3RlcGhhbg__'
Biz de var olmayan bir dönem için sorarsanız, biz bir arama hatası alıyorum:
& Nbsp; >>> terms.getTerm ('bob')
& Nbsp; traceback (en son çağrı son):
& Nbsp; ...
& Nbsp; LookupError: bob
Biz bir belirteç varsa, biz bunun için temel kimliği alabilirsiniz.
& Nbsp; >>> terms.getValue ('c3RlcGhhbg__')
& Nbsp; 'stephan'
Yeni Bu sürümde ne:
- zope.component.nextutility uygunsuz test bağımlılık kırdı.
- (İleri-uyumluluk zope.component 4.0.0) ile.
- Değiştirilen önerilmeyen zope.component.adapts kullanımı.
- Değiştirilen önerilmeyen zope.interface.implements kullanımı.
- Python 2.4 ve 2.5 desteği düştü.
Eşdeğer zope.component.adapter dekoratör ile
Eşdeğer zope.interface.implementer dekoratör ile
Gereksinimler :
- Python
Yorum Bulunamadı