Well, if he is referring to two different applications, then they have
two different cookies, different sessions, different databases,
different auth_user tables. Although there are ways around this too.


On Oct 21, 10:20 am, Alex Fanjul <alex.fan...@gmail.com> wrote:
> Hi Massimo,
> through your thread comments It seems that you always refer to the "same
> application" in two instances of the same server, and coming back to the
> first Sergay problem, he refers to "two different" applications...
> maybe I'm wrong and Sergay wanted to say differente instances...
> otherwise would be so strange, isnt it?
>
> alex F
>
> Run*two different web2py applications*  on same machine using two
> different ports (127.0.0.1:8000 and 127.0.0.1:8002). Open two browser
> windows for two apps (two tabs in Safari).
> Log in 1st application admin in 1st window.
> Log in 2nd app admin in 2nd window.
> Try to do smth in 1st window - it will ask you for password.
>
> El 21/10/2009 5:38, mdipierro escribió:
>
> > I understand what you are proposing. I need to think about this. At
> > this time we do not have any site level configuration file and we
> > consider that a plus. options.py is a configuration for the web server
> > only. Then we have routes.py which filters incoming requests and
> > responses.
>
> > If the purpose of such a prefix is to allow two web2py instances to
> > run on the same installation then that parameter cannot be set in any
> > of those configurations files else both instances will have the same
> > prefix and that would defy the purpose.
>
> > This should go in a configuration parameter of setting that is
> > specified when web2py starts. Do you agree?
>
> > Massimo
>
> > On Oct 20, 9:26 pm, Graham Dumpleton<graham.dumple...@gmail.com>
> > wrote:
>
> >> On Oct 21, 12:37 pm, mdipierro<mdipie...@cs.depaul.edu>  wrote:
>
> >>> On Oct 20, 8:01 pm, Graham Dumpleton<graham.dumple...@gmail.com>
> >>> wrote:
>
> >>>> On Oct 21, 11:14 am, mdipierro<mdipie...@cs.depaul.edu>  wrote:
>
> >>>>> Sorry my answer was confused. I guess having my son jumping around me
> >>>>> all the time does not help.
>
> >>>>> What I tried to say is that web2py cannot link a session to a port
> >>>>> hence the problem. It cannot and should not because the port is not
> >>>>> reliable since there may be a proxy.
>
> >>>> web2py shouldn't even be trying to link it to a port. Not what I am
> >>>> suggesting. How cookies work with respect to ports is just how HTTP is
> >>>> and any requirement to work around that should be entirely up to the
> >>>> user tpo do explicitly and not the framework provider try
>
> >>> Perhaps I do not understand your proposed solution. As far as I know
> >>> cookies ignore ports seehttp://code.djangoproject.com/ticket/2806and 
> >>> references therein,
> >>> specifically the last comments.
> >>> Cookies can only reliably bind to a hostname and a path.
>
> >> I wasn't proposing anything by that statement, just reaffirming that
> >> web2py should be attempting to do anything magic.
>
> >>>>> There is a flag one can set to change the session name (session.connect
> >>>>> (...appname=...)) but I do not advice using that solution because I
> >>>>> prefer a different solution. To use the Django solution, you would
> >>>>> have to detect the port the server is running on and set the name of
> >>>>> the session cookie accordingly, but I do not like idea of an app that
> >>>>> depends on the port it is running at. For example it would break
> >>>>> download over http of images that requires authentication from pages
> >>>>> that use https.
>
> >>>> You wouldn't need for the application to detect the port. If these are
> >>>> two different installations of web2py then they can have separate hard
> >>>> wired configuration setting. Presuming that is that this can be
> >>>> controlled from a global settings file somehow like with Django.
>
> >>> I do not think so but perhaps if you can show an example of how you
> >>> would handle it in Django I can provide an equivalent solution in
> >>> web2py.
>
> >> At present you have in gluon/globals.py the code:
>
> >> class Session(Storage):
>
> >>      """
> >>      defines the session object and the default values of its members
> >> (None)
> >>      """
>
> >>      def connect(
> >>          self,
> >>          request,
> >>          response,
> >>          db=None,
> >>          tablename='web2py_session',
> >>          masterapp=None,
> >>          migrate=True,
> >>          ):
> >>          self._unlock(response)
> >>          if not masterapp:
> >>              masterapp = request.application
> >>          response.session_id_name = 'session_id_%s' % masterapp
>
> >> So, the 'session_id' prefix is hard coded.
>
> >> All you would need to do is allow for that prefix to be overridden in
> >> a global configuration file. Thus avoid might say:
>
> >>          response.session_id_name = '%s_%s' % (session_id_prefix,
> >> masterapp)
>
> >> Where session_id_prefix is grabbed from global user configuration file
> >> and if not set still defaults to 'session_id'.
>
> >> I am not sure what file you use for doing that sort of thing. I see
> >> options_std.py and paramaters_XYZ.py but not sure if where such a
> >> global setting should go.
>
> >> Not sure if code:
>
> >> def get_session(request, other_application='admin'):
> >>      """ checks that user is authorized to access other_application"""
>
> >>      if request.application == other_application:
> >>          raise KeyError
> >>      try:
> >>          session_id = request.cookies['session_id_'
> >>                   + other_application].value
> >>          osession = \
> >>              storage.load_storage(os.path.join(up(request.folder),
> >>                                   other_application, 'sessions',
> >>                                   session_id))
> >>      except:
> >>          osession = storage.Storage()
> >>      return osession
>
> >> in gluon.fileutils.py would also need to change.
>
> >> Anyway, this would globally set the prefix and how to add application
> >> name on end wouldn't change.
>
> >> Graham
>
> >>>>> Instead, consider a typical web2py installation with two apps,  a and
> >>>>> b. By default, they will use the  cookies session_id_a and
> >>>>> session_id_b, respectively.  Sergey can take advantage of this feature
> >>>>> and for example, he can create a symlink "b" to his app "a". Now "a"
> >>>>> and "b" are the same app but they will have distinct session cookies.
> >>>>> He can can access "a" from one port and "b" from the other without
> >>>>> running into issues.
>
> >>>> Do you literally mean symlink as in file system symbolic link? Could
> >>>> the alias instead be managed somehow via your global route rewriting
> >>>> rules instead.
>
> >>> If you want two discinct sets of session cookies without altering the
> >>> code you need the symbolic links. This solution works with every app.
>
> >>> You can also combine routes with a path in the cookie but this
> >>> requires adding one line to the app and this will prevent other apps
> >>> from accessing sessions from this app. Something that I consider a
> >>> feature of web2py for collaborative applications.
>
> >>>> Graham
>
> >>>>> Massimo
>
> >>>>> On Oct 20, 6:41 pm, Graham Dumpleton<graham.dumple...@gmail.com>
> >>>>> wrote:
>
> >>>>>> I am talking about the original persons problem. If you think you are,
> >>>>>> then you aren't explaining things very well so the original poster and
> >>>>>> others would possibly be able to understand. At the moment you seem to
> >>>>>> be offering no solution at all.
>
> >>>>>> Back to the original problem, a session cookie is by default going to
> >>>>>> be bound to the server host name. Since this disambiguation doesn't
> >>>>>> include the port, you will have problems with having two separate web
> >>>>>> application installations which are under same host name, but
> >>>>>> different ports. The only way to resolve that is for each web
> >>>>>> application instance to use a different name for the name of the
> >>>>>> session cookie. That way two distinct cookies will be recorded in the
> >>>>>> web browser and although both would end up being sent to both
> >>>>>> installed web applications on the separate ports, because they would
> >>>>>> be distinguishing based on the name of the session cookie, they
> >>>>>> wouldn't care about the other and wouldn't interfere with each other.
>
> >>>>>> In Django you can set the SESSION_COOKIE_NAME variable in its settings
> >>>>>> file to enable this trick. Does web2py have an equivalent feature
> >>>>>> whereby the name of the session cookie can be overridden?
> >>>>>> If it
> >>>>>> doesn't, then OP poster wouldn't be able to do what he wants and thus
> >>>>>> a limitation of web2py.
>
> >>>>>> The only other way that sessions for different web application
> >>>>>> instances using same framework can be distinguished is where they are
> >>>>>> mounted at different non overlapping sub URLs. What would be done here
> >>>>>> is rather than change the name of the session cookie, one would set
> >>>>>> the path attribute of the cookie so that that specific cookie would
> >>>>>> only be sent by the web browser along with requests which fall under
> >>>>>> that sub URL for a host. If that path attribute is not present, the
> >>>>>> default is effectively '/' and so cookie sent no matter what URL is
> >>>>>> for that host. In other words, by setting path attribute of session
> >>>>>> cookie, web browser will separate cookies without needing to change
> >>>>>> the name of the cookie.
>
> >>>>>> In Django you can set the SESSION_COOKIE_PATH variable in its settings
> >>>>>> file to enable this trick. Does web2py have an equivalent feature
> >>>>>> whereby the context of what the session cookie applies to can be
> >>>>>> limited?
>
> ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to