Since realms aren’t managed by CDI, @Inject will not work.
However, you can achieve the same functionality by using CDI SPI:
CDI.current().XXX()


> On Dec 10, 2017, at 9:35 AM, Rob Young <[email protected]> wrote:
> 
> Hi Simeo,
> 
> I (finally!) took a look at this, sorry for the delay.  I've never got 
> injection working in an authorizing realm.  In our JSF/Shiro/JPA web 
> application, I had to write an authorizing realm for shiro.  What we ended up 
> doing was using JNDI to retrieve a basic JDBC connection from the container, 
> and do a basic query on user attributes with it.
> 
> I could be mistaken, but I don't think that shiro core knows anything about 
> CDI, and isn't managed by WELD.  (If I am incorrect, I would love to be 
> corrected!)  :)
> 
> We had some fun getting the JNDI connection set up correctly in glassfish - 
> it's all wrapped up in a docker container.
> 
> Here's a gist with some pseudo-java for what I'm talking about.
> https://gist.github.com/bobbotron/c1d2282069a57b2b5b58541b6540de33 
> <https://gist.github.com/bobbotron/c1d2282069a57b2b5b58541b6540de33>
> 
> 
> On Fri, Dec 1, 2017 at 11:42 AM, Simeó Reig <[email protected] 
> <mailto:[email protected]>> wrote:
> Hi Brian,
> 
>   The real application should collect users from JPA, but I made this version 
> without JPA and I simply inject a CDI that has info hardcoded on it, to do as 
> simple as possible:
> 
> 
> public class JpaRealm extends AuthorizingRealm {
> 
>     @Inject
>     private BeanLogin myBeanLogin;
> 
>     ..
> 
> }
> 
> public class BeanLogin implements Serializable {
> 
>     public User returnUserInfo(String userName) {
> 
>         User user; Role  roleAdmin;
> 
>         roleAdmin = new Role("Role_Admin");
>         roleAdmin.addPermission("all");
> 
>         user = new User(1, userName, "foobar", "Foo company");
>         user.addRol(roleAdmin);
> 
>         return user;
>                 
>     }
> 
> }
> 
> 
> 
> I don't have a mock version of non CDI system but I could do it in a few 
> hours.
> 
> 
> 
> Thanks again
> 
> 
> 
> A 01-12-2017 15:04, Brian Demers escrigué:
> 
>> I just took a quick look, so I very well might have missed something. but 
>> where are you dealing with the user's password?
>>  
>> You mentioned you have a non-CDI version that works? can you point us to 
>> that too?
>> 
>> On Fri, Dec 1, 2017 at 8:21 AM, Simeó Reig <[email protected] 
>> <mailto:[email protected]>> wrote:
>> Hi all,
>> 
>>   has anybody been able to take a look on it? It's a minimal maven JSF2 
>> project to use CDI on authentification under shiro but I wasn't be able to 
>> make it work. CDI is working fine but  SimpleAuthenticationInfo it's always 
>> raising up IncorrectCredentialsException despite credentials are Ok
>> 
>> https://github.com/simeoreig/shiro-JPA 
>> <https://github.com/simeoreig/shiro-JPA>
>> Thanks again
>> 
>> Simeó Reig
>> 
>> 
>> 
>> A 29-11-2017 10:52, Simeó Reig escrigué:
>> 
>> Thanks a lot!
>> 
>> A 29-11-2017 05:01, Rob Young escrigué:
>> 
>> Hi Simeo,
>> 
>>  
>> I'm swamped with work but could take a look in a few days, sounds like 
>> you're close!
>> 
>> On Tuesday, November 28, 2017, Simeó Reig <[email protected] 
>> <mailto:[email protected]>> wrote:
>> Hi
>> 
>>   If someone can review it, I've just uploaded a minimal maven JSF 2 project 
>> on https://github.com/simeoreig/shiro-JPA 
>> <https://github.com/simeoreig/shiro-JPA>
>>   CDI Injection is working but now SimpleAuthenticationInfo it's always 
>> raising up IncorrectCredentialsException despite credentials are Ok (without 
>> JPA is working well)
>> 
>> Just test with user john, pass foobar
>> 
>> 
>> 
>>   Thanks a lot
>> 
>> Simeó Reig
>> 
>> 
>> 
>> A 28-11-2017 22:00, Simeó Reig escrigué:
>> 
>> Thanks Brian I'm going to recheck it
>> 
>> A 28-11-2017 20:31, Brian Demers escrigué:
>> 
>> Are you sure you are injecting all of your components correctly?  Sounds 
>> like that might be the issue
>> 
>> On Tue, Nov 28, 2017 at 1:37 PM, Simeó Reig <[email protected] 
>> <>> wrote:
>> Dear alls,
>> 
>>   Is it possible to use a Inject  a DAO reference inside a class extending 
>> AuthorizingRealm ?
>> 
>> I've followed 
>> https://stackoverflow.com/questions/15605038/unable-to-inject-my-dao-in-a-custom-apache-shiro-authorizingrealm
>>  
>> <https://stackoverflow.com/questions/15605038/unable-to-inject-my-dao-in-a-custom-apache-shiro-authorizingrealm>
>>  without success. JPA injection works but SimpleAuthenticationInfo in 
>> doGetAuthenticationInfo method always return ' token 
>> [org.apache.shiro.authc.UsernamePasswordToken - john,rememberMe=false] did 
>> not match the expected credentials"
>> 
>> Shiro 1.3.2 in a JSF application, shiro works without JPA as expected
>> 
>> Thanks
>> 
>> Simeó Reig
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> -- 
>> Rob Young
>> [email protected] <mailto:[email protected]>
>>  
>> 
>> 
>> 
>> 
> 
> 
> 
> 
> -- 
> Rob Young
> [email protected] <mailto:[email protected]>
> 

Reply via email to