Velko Ivanov wrote:
Dominik Huber wrote:
Provide ILocation by those adapters, use the
'locatalbe' attribute of the adapter directive (-> location proxied)
or set the permission explicitly to zope.Public.
Thanks for the reply
PsycopgAdapter inherits ZopeDatabaseAdapter, which provides ILocation
via IContained. No <adapter> directives are used in the configuration
file, zope.Public is the least acceptable workaround.
There is a confusion between zope adapter and database adapter. Database
adapters are regularly implemented as local utility (DA utility).
Therefore a database adapter does provide IContained. The DA utitlity
has to be invoked in your application somehow and that invocation
*might* be happen with a zope adapter.
If such an potential zope adapter does not provide Location (or
locatable=True within its adapter directive) the local authentication
cannot be invoked because its context cannot be evaluated (None
locations are global).
Whitout knowing further details about DA's, SessionCredentialsPlugin,
etc your problem smells like a global/local-muddle. Maybe you could use
the 'ZopeBasicRealm' and the 'No Challange if Authenticated' credential
plugin to narrow the bug source. I use this configuration with different
authenticator plugins and local/global principals.
Zope3-dev mailing list