[Zope-dev] Ambiguities in "Inheritance and Class Security Declaration"
Chris McDonough
chrism@zope.com
Fri, 19 Jul 2002 21:20:45 -0400
Ross Boylan wrote:
> After reading this section of the development guide, I have a lot of
> questions (pp 75-76 of the guide).
>
> 1. If a subclass redefines a base class method, does the subclass need
> to do a security declaration on it? The document says "You only need
> to make security declarations for methods .... your class actually
> defines. If your class inherits from other classes, the methods of
> the base classes are protected by the security declarations made in
> the base classes." The first sentence seems to indicate a security
> declaration is necessary (since you define the method); the second
> sentence suggests its not. It depends partly on the meaning of
> "define" and also "method" (that is, is redefinition considered
> definition? does method refer to a name or to a specific classes
> implementation of that name?).
You should have security declarations for each method you define, even
if they are defined in the base class.
>
> 2. Does a subclass need to have
> security = ClassSecurityInfo()
> in it if the base class does? Judging from the example, yes.
>
Yes.
> 3. Under what circumstances is the declaration in 2 necessary? For
> example, only if new method names are introduced and protected? Or
> any reference to security in the subclass? It seems the latter, from
> the example.
Define security assertions for all the methods you define.
>
> 4. Suppose we wanted to change the security of a base class method
> without otherwise redefining it. What's necessary then?
Define a security declaration for a method without actually defining the
method. Your security declaration will override those of the base class.
>
> 5. Under what conditions is InitializeClass necessary for the subclass
> when the base class has been through InitializeClass? (The guide only
> addresses the case when the base class has not been so processed. It
> also says the declarations "filter down", but the implication of this
> for new method is unclear.)
When you define new methods or when you want to override security
declarations in the base class. It never hurts to run a class through
InitializeClass.
>
> This section has a lot of explicit discussion of odd cases (no
> security in superclass, redefining permissions on existing methods
> without changing them) and not enough about the normal cases (my
> subclass extends some base class methods and defines some new ones).
>
> Also, the second paragraph uses "superclass" where I hope it means
> subclass.
These comments would be more helpful if they were made using the comment
system that is in the book itself. I will unfortunately forget about
this maillist message in about 10 minutes, but if they were made inline,
when I went to go edit the book, there they'd be. ;-)
> Although I would appreciate and responses from the list, I would also
> like to send these comments to the documents authors. Unfortunately,
> I see no authorship or contact information in the document. Can
> anyone suggest some?
I wrote most of it. You can ask, I may be able to answer. ;-)
--
Chris McDonough Zope Corporation
http://www.zope.org http://www.zope.com
"Killing hundreds of birds with thousands of stones"