You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@shiro.apache.org by Alex Orlov <oo...@mail.ru> on 2020/11/21 11:11:22 UTC

Must Realm#onInit be called when SecurityManager is created manually?

Hello all,
 
I have two security managers — web and default. When shiro filter creates web manager
the method onInit( https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/realm/AuthorizingRealm.html#onInit( ) )
of my Realm is called.
 
However, when I create SM manually
            var realm = new SecurityRealm();
           ...
            DefaultSecurityManager sm = new DefaultSecurityManager(realm);
            sm.setCacheManager(new MemoryConstrainedCacheManager());
            this.securityManager = sm;
 
this method (onInit) is not called.
 
Could anyone say if it is a bug or I miss something (I use shiro 1.7.0)?
 
 
--
Best regards, Alex Orlov

Re[2]: Must Realm#onInit be called when SecurityManager is created manually?

Posted by Alex Orlov <oo...@mail.ru>.
Could you explain the lifecycle of what? Of SecurityManager? Is there something like Shiro container?
I am asking because either I don’t understand something, or it is a little strange that sometimes Realm onInit method
is called and sometimes not? We are talking about one object in SecurityManager. So, it is SM that must control Realm,
isn’t it. But if it is the duty of SM why does SM behave differently? I don’t understand...
 
 
--
Best regards, Alex Orlov
 
  
>Суббота, 21 ноября 2020, 19:12 +03:00 от Brian Demers <br...@gmail.com>:
> 
>Shiro has "lifecycle" methods that can be plugged into a DI container.  If you are not using a Shiro integration, you can just need to call the `onInit` method directly.   
>On Sat, Nov 21, 2020 at 6:11 AM Alex Orlov < ooo_saturn7@mail.ru > wrote:
>>Hello all,
>> 
>>I have two security managers — web and default. When shiro filter creates web manager
>>the method onInit( https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/realm/AuthorizingRealm.html#onInit( ) )
>>of my Realm is called.
>> 
>>However, when I create SM manually
>>            var realm = new SecurityRealm();
>>           ...
>>            DefaultSecurityManager sm = new DefaultSecurityManager(realm);
>>            sm.setCacheManager(new MemoryConstrainedCacheManager());
>>            this.securityManager = sm;
>> 
>>this method (onInit) is not called.
>> 
>>Could anyone say if it is a bug or I miss something (I use shiro 1.7.0)?
>> 
>> 
>>--
>>Best regards, Alex Orlov
 

Re[6]: Must Realm#onInit be called when SecurityManager is created manually?

Posted by Alex Orlov <oo...@mail.ru>.
Let’s make a deal — I open an issue, you make a pull request, all right?
 
 
--
Best regards, Alex Orlov
 
  
>Вторник, 24 ноября 2020, 18:23 +03:00 от Brian Demers <bd...@apache.org>:
> 
>I agree, pull requests are always welcome :D   
>On Tue, Nov 24, 2020 at 1:56 AM Alex Orlov < ooo_saturn7@mail.ru > wrote:
>>Hello Brian,
>> 
>>Thank you for clarifying this moment. I think, it would be fine to add information about
>>LifecycleUtils here  https://shiro.apache.org/configuration.html#programmatic-configuration
>> 
>> 
>>--
>>Best regards, Alex Orlov
>> 
>>  
>>>Вторник, 24 ноября 2020, 1:55 +03:00 от Brian Demers < brian.demers@gmail.com >:
>>> 
>>>Correct,
>>> 
>>>Most of the time these methods would be transparently called via (Shiro's INI feature, Spring, Guice, or potentially CDI),   
>>>On Sat, Nov 21, 2020 at 3:12 PM Alex Orlov < ooo_saturn7@mail.ru > wrote:
>>>>Do I understand it correctly if we control realm and security manager manually we need to use:
>>>> 
>>>>to init Realm → LifecycleUtils.init(realm);
>>>>to destroy SecurityManager → LifecycleUtils.destroy(securityManager);
>>>> 
>>>> 
>>>>--
>>>>Best regards, Alex Orlov
>>>> 
>>>>  
>>>>>Суббота, 21 ноября 2020, 19:12 +03:00 от Brian Demers < brian.demers@gmail.com >:
>>>>> 
>>>>>Shiro has "lifecycle" methods that can be plugged into a DI container.  If you are not using a Shiro integration, you can just need to call the `onInit` method directly.   
>>>>>On Sat, Nov 21, 2020 at 6:11 AM Alex Orlov < ooo_saturn7@mail.ru > wrote:
>>>>>>Hello all,
>>>>>> 
>>>>>>I have two security managers — web and default. When shiro filter creates web manager
>>>>>>the method onInit( https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/realm/AuthorizingRealm.html#onInit( ) )
>>>>>>of my Realm is called.
>>>>>> 
>>>>>>However, when I create SM manually
>>>>>>            var realm = new SecurityRealm();
>>>>>>           ...
>>>>>>            DefaultSecurityManager sm = new DefaultSecurityManager(realm);
>>>>>>            sm.setCacheManager(new MemoryConstrainedCacheManager());
>>>>>>            this.securityManager = sm;
>>>>>> 
>>>>>>this method (onInit) is not called.
>>>>>> 
>>>>>>Could anyone say if it is a bug or I miss something (I use shiro 1.7.0)?
>>>>>> 
>>>>>> 
>>>>>>--
>>>>>>Best regards, Alex Orlov
>>>> 
>> 
 

Re: Re[4]: Must Realm#onInit be called when SecurityManager is created manually?

Posted by Brian Demers <bd...@apache.org>.
I agree, pull requests are always welcome :D

On Tue, Nov 24, 2020 at 1:56 AM Alex Orlov <oo...@mail.ru> wrote:

> Hello Brian,
>
> Thank you for clarifying this moment. I think, it would be fine to add
> information about
> LifecycleUtils here
> https://shiro.apache.org/configuration.html#programmatic-configuration
>
>
> --
> Best regards, Alex Orlov
>
>
>
> Вторник, 24 ноября 2020, 1:55 +03:00 от Brian Demers <
> brian.demers@gmail.com>:
>
> Correct,
>
> Most of the time these methods would be transparently called via (Shiro's
> INI feature, Spring, Guice, or potentially CDI),
>
> On Sat, Nov 21, 2020 at 3:12 PM Alex Orlov <ooo_saturn7@mail.ru
> <//...@mail.ru>> wrote:
>
> Do I understand it correctly if we control realm and security manager
> manually we need to use:
>
> to init Realm → LifecycleUtils.init(realm);
> to destroy SecurityManager → LifecycleUtils.destroy(securityManager);
>
>
> --
> Best regards, Alex Orlov
>
>
>
> Суббота, 21 ноября 2020, 19:12 +03:00 от Brian Demers <
> brian.demers@gmail.com
> <//...@gmail.com>>:
>
> Shiro has "lifecycle" methods that can be plugged into a DI container.  If
> you are not using a Shiro integration, you can just need to call the
> `onInit` method directly.
>
> On Sat, Nov 21, 2020 at 6:11 AM Alex Orlov <ooo_saturn7@mail.ru
> <ht...@mail.ru>> wrote:
>
> Hello all,
>
> I have two security managers — web and default. When shiro filter creates
> web manager
> the method onInit(
> https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/realm/AuthorizingRealm.html#onInit()
> )
> of my Realm is called.
>
> However, when I create SM manually
>             var realm = new SecurityRealm();
>            ...
>             DefaultSecurityManager sm = new DefaultSecurityManager(realm);
>             sm.setCacheManager(new MemoryConstrainedCacheManager());
>             this.securityManager = sm;
>
> this method (onInit) is not called.
>
> Could anyone say if it is a bug or I miss something (I use shiro 1.7.0)?
>
>
> --
> Best regards, Alex Orlov
>
>
>
>
>

Re[4]: Must Realm#onInit be called when SecurityManager is created manually?

Posted by Alex Orlov <oo...@mail.ru>.
Hello Brian,
 
Thank you for clarifying this moment. I think, it would be fine to add information about
LifecycleUtils here  https://shiro.apache.org/configuration.html#programmatic-configuration
 
 
--
Best regards, Alex Orlov
 
  
>Вторник, 24 ноября 2020, 1:55 +03:00 от Brian Demers <br...@gmail.com>:
> 
>Correct,
> 
>Most of the time these methods would be transparently called via (Shiro's INI feature, Spring, Guice, or potentially CDI),   
>On Sat, Nov 21, 2020 at 3:12 PM Alex Orlov < ooo_saturn7@mail.ru > wrote:
>>Do I understand it correctly if we control realm and security manager manually we need to use:
>> 
>>to init Realm → LifecycleUtils.init(realm);
>>to destroy SecurityManager → LifecycleUtils.destroy(securityManager);
>> 
>> 
>>--
>>Best regards, Alex Orlov
>> 
>>  
>>>Суббота, 21 ноября 2020, 19:12 +03:00 от Brian Demers < brian.demers@gmail.com >:
>>> 
>>>Shiro has "lifecycle" methods that can be plugged into a DI container.  If you are not using a Shiro integration, you can just need to call the `onInit` method directly.   
>>>On Sat, Nov 21, 2020 at 6:11 AM Alex Orlov < ooo_saturn7@mail.ru > wrote:
>>>>Hello all,
>>>> 
>>>>I have two security managers — web and default. When shiro filter creates web manager
>>>>the method onInit( https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/realm/AuthorizingRealm.html#onInit( ) )
>>>>of my Realm is called.
>>>> 
>>>>However, when I create SM manually
>>>>            var realm = new SecurityRealm();
>>>>           ...
>>>>            DefaultSecurityManager sm = new DefaultSecurityManager(realm);
>>>>            sm.setCacheManager(new MemoryConstrainedCacheManager());
>>>>            this.securityManager = sm;
>>>> 
>>>>this method (onInit) is not called.
>>>> 
>>>>Could anyone say if it is a bug or I miss something (I use shiro 1.7.0)?
>>>> 
>>>> 
>>>>--
>>>>Best regards, Alex Orlov
>> 
 

Re: Re[2]: Must Realm#onInit be called when SecurityManager is created manually?

Posted by Brian Demers <br...@gmail.com>.
Correct,

Most of the time these methods would be transparently called via (Shiro's
INI feature, Spring, Guice, or potentially CDI),

On Sat, Nov 21, 2020 at 3:12 PM Alex Orlov <oo...@mail.ru> wrote:

> Do I understand it correctly if we control realm and security manager
> manually we need to use:
>
> to init Realm → LifecycleUtils.init(realm);
> to destroy SecurityManager → LifecycleUtils.destroy(securityManager);
>
>
> --
> Best regards, Alex Orlov
>
>
>
> Суббота, 21 ноября 2020, 19:12 +03:00 от Brian Demers <
> brian.demers@gmail.com>:
>
> Shiro has "lifecycle" methods that can be plugged into a DI container.  If
> you are not using a Shiro integration, you can just need to call the
> `onInit` method directly.
>
> On Sat, Nov 21, 2020 at 6:11 AM Alex Orlov <ooo_saturn7@mail.ru
> <//...@mail.ru>> wrote:
>
> Hello all,
>
> I have two security managers — web and default. When shiro filter creates
> web manager
> the method onInit(
> https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/realm/AuthorizingRealm.html#onInit()
> )
> of my Realm is called.
>
> However, when I create SM manually
>             var realm = new SecurityRealm();
>            ...
>             DefaultSecurityManager sm = new DefaultSecurityManager(realm);
>             sm.setCacheManager(new MemoryConstrainedCacheManager());
>             this.securityManager = sm;
>
> this method (onInit) is not called.
>
> Could anyone say if it is a bug or I miss something (I use shiro 1.7.0)?
>
>
> --
> Best regards, Alex Orlov
>
>
>

Re[2]: Must Realm#onInit be called when SecurityManager is created manually?

Posted by Alex Orlov <oo...@mail.ru>.
Do I understand it correctly if we control realm and security manager manually we need to use:
 
to init Realm → LifecycleUtils.init(realm);
to destroy SecurityManager → LifecycleUtils.destroy(securityManager);
 
 
--
Best regards, Alex Orlov
 
  
>Суббота, 21 ноября 2020, 19:12 +03:00 от Brian Demers <br...@gmail.com>:
> 
>Shiro has "lifecycle" methods that can be plugged into a DI container.  If you are not using a Shiro integration, you can just need to call the `onInit` method directly.   
>On Sat, Nov 21, 2020 at 6:11 AM Alex Orlov < ooo_saturn7@mail.ru > wrote:
>>Hello all,
>> 
>>I have two security managers — web and default. When shiro filter creates web manager
>>the method onInit( https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/realm/AuthorizingRealm.html#onInit( ) )
>>of my Realm is called.
>> 
>>However, when I create SM manually
>>            var realm = new SecurityRealm();
>>           ...
>>            DefaultSecurityManager sm = new DefaultSecurityManager(realm);
>>            sm.setCacheManager(new MemoryConstrainedCacheManager());
>>            this.securityManager = sm;
>> 
>>this method (onInit) is not called.
>> 
>>Could anyone say if it is a bug or I miss something (I use shiro 1.7.0)?
>> 
>> 
>>--
>>Best regards, Alex Orlov
 

Re: Must Realm#onInit be called when SecurityManager is created manually?

Posted by Brian Demers <br...@gmail.com>.
Shiro has "lifecycle" methods that can be plugged into a DI container.  If
you are not using a Shiro integration, you can just need to call the
`onInit` method directly.

On Sat, Nov 21, 2020 at 6:11 AM Alex Orlov <oo...@mail.ru> wrote:

> Hello all,
>
> I have two security managers — web and default. When shiro filter creates
> web manager
> the method onInit(
> https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/realm/AuthorizingRealm.html#onInit()
> )
> of my Realm is called.
>
> However, when I create SM manually
>             var realm = new SecurityRealm();
>            ...
>             DefaultSecurityManager sm = new DefaultSecurityManager(realm);
>             sm.setCacheManager(new MemoryConstrainedCacheManager());
>             this.securityManager = sm;
>
> this method (onInit) is not called.
>
> Could anyone say if it is a bug or I miss something (I use shiro 1.7.0)?
>
>
> --
> Best regards, Alex Orlov
>