Re: A session-aware kind of FileLibrary - how/where to start
Karsten Kusche <[email protected]> Thu, 1 Apr 2021 05:33:34 +0000
| Newsgroups | gmane.comp.lang.smalltalk.squeak.seaside |
|---|---|
| Message-ID | <[email protected]> |
Hi Joachim, I think serving files via FileHandler or via callback-registry is pretty much the same performance wise. If you use the callback-registry then the mechanisms that lead to the callback-registry already take care of the session-specific stuff. Having a file handler at /files typically allows for using an apache for serving files. In that case however you cannot use the session-key, so your new file-handler will not help much performance wise. Kind Regards Karsten — Georg Heeg eK Wallstraße 22 06366 Köthen Tel.: 03496/214328 FAX: 03496/214712 Amtsgericht Dortmund HRA 12812 Am 1. April 2021 um 06:59:35, [email protected] ([email protected]<mailto:[email protected]>) schrieb: Jupiter, sorry for my late reply. For some reason, your answer was moved to my spam folder and I just found it there between lots of pharma and crypto tips... While I see where you are headed with this, I wonder if there are differences between the approaches. I have the feeling a separate WAFileHandler might have the advantage of being more decoupled from the components that consume/refer/use files. And I wonder if a separate WAFileHandler might decouple things a little more, like allowing for parallel execution of requests? Joachim Am 30.03.21 um 14:23 schrieb Jupiter Jones: > This may be a little left-field, but if you want a more integrated approach you could try something like: > > > renderContentOn: canvas > canvas anchor > url: (self fileAccessUtlFroFile: #restrictedAccessFile); > with: ‘Download' > > > fileAccessUrlForFile: fileIdentifier > ^self renderContext actionUrl copy > addField: > (self renderContext callbacks > store: (WAActionCallback on: [ self processFileAccessCallbackForFile: fileIdentifier ])); > yourself. > > > processFileAccessCallbackForFile: fileIdentifier > (self session isUserAllowedToDownloadFile: fileIndeitifier) ifTrue: [ > self requestContext response redirectTo: (self actualUrlForFile: fileIdentifier) > ] > > > You could also serve the file directly in the response rather than #redirectTo: if you wanted added security. > > The above is incomplete, but perhaps fits the brief. > > Cheers, > > Jupiter > >> On 30 Mar 2021, at 8:18 pm, [email protected] wrote: >> >> Hi, >> >> >> There are situations in which I feel like after 10+ years of using Seaside, I am still a newbie. (well, same for Smalltalk after 25+ years, so this may be normal). >> >> I would like to implement some kind of FileLibrary that is aware of the current session and only delivers files to logged-on users. >> >> It seems like the best starting point for this is to subclass WARequestHandler and register it with WAAdmin. So the first thing I did was implement handleFiltered: aRequestContext. Unfortunately, neither aRequestContext nor self return a WASession, although I entered _s and _k form a logged in session into the address bar of my Browser. This may be a naive approach, but as a fist test case this seemed like a good idea ;-) >> >> Now the question I ask myself is: how do I teach my WARequestHandler subclass the trick of knowing/finding the current session. Do I add some Filter? Is subclassing WARequestHandler the wrong idea anyways? (I started my experiments with a subclass of WAFileLibrary, but that also didn't get me anywhere...). >> >> I am not asking for a ready-made solution. I'd rather try to understand a little more about Seasides innards here... >> >> Any pointers? Kick-off ideas what to look at? >> >> >> tia, >> >> >> Joachim >> >> >> >> >> -- >> ----------------------------------------------------------------------- >> Objektfabrik Joachim Tuchel mailto:[email protected] >> Fliederweg 1 http://www.objektfabrik.de >> D-71640 Ludwigsburg http://joachimtuchel.wordpress.com >> Telefon: +49 7141 56 10 86 0 Fax: +49 7141 56 10 86 1 >> >> >> _______________________________________________ >> seaside mailing list >> [email protected] >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > _______________________________________________ > seaside mailing list > [email protected] > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside -- ----------------------------------------------------------------------- Objektfabrik Joachim Tuchel mailto:[email protected] Fliederweg 1 http://www.objektfabrik.de D-71640 Ludwigsburg http://joachimtuchel.wordpress.com Telefon: +49 7141 56 10 86 0 Fax: +49 7141 56 10 86 1 _______________________________________________ seaside mailing list [email protected] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside _______________________________________________ seaside mailing list [email protected] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside