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]> >
