Hi Les,

As a work around where should I set cachemanager.

I am using ShiroFilter for flex request.

Once ShiroFilter execution over I am calling my remote services  using
BlazeDS.

Could you suggest me the best place to set cache manager.

 

Thanks

Balajee

 

________________________________

From: [email protected] [mailto:[email protected]] On
Behalf Of Les Hazlewood <[email protected]>
Sent: Friday, September 04, 2009 5:32 PM
To: [email protected]
Subject: Re: Losing session

 

You need to specify a SessionListener on the SecurityManager instance: 

org.apache.shiro.session.SessionListener sessionListener = new 
MySessionListener(); 
securityManager.addSessionListener(yourSessionListener); 

Currently, because there is no setSessionListener method (only for a 
collection) and collections support does not work in the INI 
configuration, you can't configure this in web.xml or shiro.ini - it 
needs to be in code. 

This is a limitation to the .ini file format and makes it difficult to 
configure object graphs. The devs have discussed other configuration 
mechanisms in the past, and we think we'll need a better solution for 
1.0. Stay tuned for that. 

Cheers, 

Les 

On Fri, Sep 4, 2009 at 11:05 AM, wrote: 
> Hi Mad, 
> 
> I have taken new source doe few hours again and build it with mavan, 
> 
> Now I am able to set session Timeout but still couldn't resolve how to
get 
> the notification when session expired on server so that I can send
some 
> message to client. 
> 
> I am using flex and java in my application so I have to send a message
using 
> blazeDS to flex when ever session timed out. 
> 
> 
> 
> @Les: could u please tell how to get some kind of notification when
session 
> timed out . 
> 
> 
> 
> Thanks 
> 
> Balajee 
> 
> 
> 
> ________________________________ 
> 
> From: mad rug [mailto:mad rug ] 
> Sent: Friday, September 04, 2009 5:01 PM 
> To: [email protected] 
> Subject: Re: Losing session 
> 
> 
> 
> Balajee, 
> 
> 
> 
> No, my issue is not fixed yet, but I haven't investigated it
further... I 
> still couldn't get the time to try the latest Shiro snapshot, as I'm
with 
> other tasks in hand. 
> 
> 
> 
> Is this configuration you posted making the expire timeout work? Are
you 
> using the latest snapshot? 
> 
> If this is not the fix, let us know if you find it. As soon as I go
back to 
> this issue and discover something, I'll send a mail. 
> 
> 
> 
> Regards, 
> 
> Mad 
> 
> On Fri, Sep 4, 2009 at 11:24 AM, Les Hazlewood 
> wrote: 
> 
> Please don't use the 'sm' alias.  It has been removed from the latest 
> Shiro snapshot.  It was causing problems and it should have never been
> enabled - there is no way to specify aliases for anything else in 
> configuration and this one special case was causing problems, so it 
> was better to remove it and have the securityManager work like 
> everything else. 
> 
> Just use the 'securityManager' bean name from now on please. 
> 
> - Les 
> 
> On Fri, Sep 4, 2009 at 9:01 AM,   wrote: 
>> Hi Les, 
>> 
>> Even those I specified configuration I nweb.xml   as below: 
>> 
>>                   [main] 
>> 
>>                         realmA = com.xymz.abc.imp.myDAo 
>> 
>>                         securityManager = 
>> org.apache.shiro.web.DefaultWebSecurityManager 
>> 
>>                         sessionManager = 
>> org.apache.shiro.web.session.DefaultWebSessionManager 
>> 
>>                         sessionManager.globalSessionTimeout = 300000 
>> 
>>                         securityManager.sessionMode = native 
>> 
>>                         securityManager.sessionManager =
$sessionManager 
>> 
>> 
>> 
>> When I debug into deeper I found the root as below 
>> 
>> Web.xml configured securityManger is replacing by default
securityManager 
>> which was created in createSecurityManagerForSection  method of 
>> IniConfiguration  class. 
>> 
>>  In this  method following snippet of code is there as defaults 
>> 
>>         defaults.put("securityManager", securityManager); 
>> 
>>         //convenient alias: 
>> 
>>         defaults.put("sm", securityManager); 
>> 
>> 
>> 
>>  SecurityManager created by key "securityManager" is replacing by key
"sm" 
>> by following line 
>> 
>> 
>> 
>> if (value instanceof RealmSecurityManager) { 
>> 
>>                 securityManager = (RealmSecurityManager) value; 
>> 
>>             } 
>> 
>> 
>> 
>> If I add following code along with above web.xml configuration then
it is 
>> configuring correctly. 
>> 
>> 
>> 
>>                          sm = 
>> org.apache.shiro.web.DefaultWebSecurityManager 
>> 
>>                         sm.sessionMode = native 
>> 
>>                         sm.sessionManager = $sessionManager 
>> 
>> 
>> 
>> Both the default securityMangers are replaced by web.xml configured 
>> values. 
>> 
>> 
>> 
>> May I know what is the purpose of defaults.put("sm" ,"
securityManager"); 
>> 
>> 
>> 
>> Could you please tell us how to tell the end user that session
expired. 
>> 
>> 
>> 
>> Thanks 
>> 
>> Balajee 
>> 
>> 
>> 
>> ________________________________ 
>> 
>> From: [email protected] [mailto:[email protected]]
On 
>> Behalf Of Les Hazlewood 
>> Sent: Tuesday, August 25, 2009 4:43 PM 
>> To: [email protected] 
>> Subject: Re: Losing session 
>> 
>> 
>> 
>> Hi Mad, 
>> 
>> Wait until tomorrow when hopefully the trunk is back to being stable 
>> again - then you should try the latest trunk as I recall a session 
>> timeout bug being fixed early last week. 
>> 
>> - Les 
>> 
>> On Tue, Aug 25, 2009 at 10:14 AM, mad rug wrote: 
>>> I'm still troubled with this... 
>>> I keep losing my session after 30 minutes (default timeout), no
matter 
>>> the 
>>> user activity. I need to fix this to allow session expiration after
some 
>>> time of inactivity, and present nice messages when the session
expires. 
>>> What's the way to do this? 
>>> Thanks! 
>>> 
>>> On Fri, Aug 21, 2009 at 12:57 PM, mad rug wrote: 
>>>> 
>>>> Well, I might try it then... weekend is coming, and I can get what
I had 
>>>> to do until Monday, and still fix this... I hope :-P 
>>>> Other notes: 
>>>> - I thought that I may change the sessionValidationInterval
property to 
>>>> a 
>>>> lower value so the session gets invalidated quickly, but I couldn't
find 
>>>> it 
>>>> on DefaultWebSecurityManager, even though it 
>>>> extends AbstractValidatingSessionManager; 
>>>> - I read about autoCreateSessionAfterInvalidation, that it is
defaulted 
>>>> to 
>>>> true, I got a doubt: if the session is replaced by a new one, like
I 
>>>> guess 
>>>> it is happening in my case, then this is merely a dev convenience
to let 
>>>> the 
>>>> user log itself using the already available new session, but all
the 
>>>> data 
>>>> stored in the previous session is gone, is that right? 
>>>> I implemented a SessionListener, but I'm now unsure how it will
help me. 
>>>> First, it does notify me on session timeout, but all that I get is
the 
>>>> expired session... I want to notify the user with some 'session
expired, 
>>>> login again' message, but an expired session won't help me on that,
I 
>>>> guess. 
>>>> How can I do it? 
>>>> Second, I used the listener to set my 10s timeout by code to test 
>>>> expiration, and it expires my session after the 10s, but no matter
if 
>>>> I'm 
>>>> inactive or performing actions and navigating around my app all the
>>>> time. 
>>>> Is 
>>>> this right, or is that one of your fixed bugs? 
>>>> Thanks again Les. You've been invaluable to get my application
working! 
>>>> 
>>>> On Fri, Aug 21, 2009 at 12:23 PM, Les Hazlewood 
>>>> wrote: 
>>>>> 
>>>>> In that case you will want the latest snapshot version - now that
I 
>>>>> think about it, I think one of those bugs did affect session
timeout. 
>>>>> 
>>>>> On Fri, Aug 21, 2009 at 11:07 AM, mad rug wrote: 
>>>>> > Les, 
>>>>> > I'm using native session ( 
>>>>> > value="shiro"/>). For 
>>>>> > sure I'm not with the latest version of shiro... I'm using this 
>>>>> > snapshot for 
>>>>> > over two months. As you say it is unlikely that it is related to
the 
>>>>> > last 
>>>>> > fixes, I'll try to keep this version, unless things do not get
in 
>>>>> > line. 
>>>>> > I just tested global timeout ( 
>>>>> > value="10000"/> ), but the session is not expiring as fast as I 
>>>>> > expected... 
>>>>> > it lasted minutes. Is a number as low as this accepted? I used
10s 
>>>>> > for 
>>>>> > testing... I plan to use something around 15 minutes. 
>>>>> > I use no listeners so far, but I guess they will do the job. As
I 
>>>>> > said, 
>>>>> > I 
>>>>> > store some user data on the session (name, nick, company it
works 
>>>>> > for...) 
>>>>> > and this data is put on the header of every page, so if the
listener 
>>>>> > is 
>>>>> > called the first time the expired session is accessed, it will
be 
>>>>> > fine. 
>>>>> > I'll try that right now... any problem, I'll bother you again!
;-) 
>>>>> > Thanks again! 
>>>>> > On Fri, Aug 21, 2009 at 11:32 AM, Les Hazlewood 
>>>>> > wrote: 
>>>>> >> 
>>>>> >> Hi Mad, 
>>>>> >> 
>>>>> >> Are you using standard ServletContainer sessions?  or Shiro's
native 
>>>>> >> sessions? 
>>>>> >> 
>>>>> >> If using native sessions, ensure you're using the latest
version of 
>>>>> >> Shiro - a few session-related bugs were fixed over the last
month. 
>>>>> >>  I 
>>>>> >> doubt they would be related to what you're seeing, but at least
its 
>>>>> >> worth a try. 
>>>>> >> 
>>>>> >> You can also set the global session timeout (for all sessions) 
>>>>> >> setting 
>>>>> >> sessionManager.globalSessionTimeout = desiredMilliseconds. 
>>>>> >> 
>>>>> >> Also, you could implement a
org.apache.shiro.session.SessionListener 
>>>>> >> to listen to session lifecycle events 
>>>>> >> (securityManager.setSessionListeners(Collection 
>>>>> >> listeners); ).  Note however that session validation (for 
>>>>> >> expiration) 
>>>>> >> is done lazily:  you won't receive an 'expiredSession'
notification 
>>>>> >> the exact instant it expires.  You'll receive the notification
if an 
>>>>> >> expired session is ever accessed or the next time Shiro's
session 
>>>>> >> validator executes (configurable - defaults to once per hour I 
>>>>> >> think). 
>>>>> >> 
>>>>> >> Finally, if you want to know about logins and logouts, don't
use a 
>>>>> >> SessionListener for this - use an 
>>>>> >> org.apache.shiro.authc.AuthenticationListener 
>>>>> >> 
>>>>> >> 
>>>>> >> (securityManager.setAuthenticationListeners(Collection 
>>>>> >> listeners); ). 
>>>>> >> 
>>>>> >> Regards, 
>>>>> >> 
>>>>> >> Les 
>>>>> >> 
>>>>> >> On Fri, Aug 21, 2009 at 9:49 AM, mad rug wrote: 
>>>>> >> > Hi 
>>>>> >> > I'm having some problem with my application. I use Shiro in a
>>>>> >> > Spring 
>>>>> >> > MVC 
>>>>> >> > application much like the sample included with Shiro. I use
Shiro 
>>>>> >> > session, 
>>>>> >> > and I store some logged user data in it (user ID, company
that 
>>>>> >> > user 
>>>>> >> > belongs 
>>>>> >> > to, etc), but sometimes my app seem to be losing its session,
like 
>>>>> >> > a 
>>>>> >> > timeout, but without long inactive periods. I notice it
quickly 
>>>>> >> > because 
>>>>> >> > my 
>>>>> >> > header pages contain the name of the user and its company
name, 
>>>>> >> > and 
>>>>> >> > they 
>>>>> >> > suddenly are gone, even though I remain authenticated 
>>>>> >> > ( 
>>>>> >> > still returns the user principal). 
>>>>> >> > I don't know where I am missing some config to make the
session 
>>>>> >> > last 
>>>>> >> > longer... how can I handle it? 
>>>>> >> > Moreover, does Shiro provide any facility to handle session 
>>>>> >> > timeout, 
>>>>> >> > and 
>>>>> >> > maybe redirect to some warning page? 
>>>>> >> > Thanks! 
>>>>> > 
>>>>> > 
>>>> 
>>> 
>>> 
> 
> 

Reply via email to