java - Authentication with Spring Security + Spring data + MongoDB -



java - Authentication with Spring Security + Spring data + MongoDB -

i want utilize spring security mongodb (using spring data) , retrieve users own database spring security. however, can not since userservice type not seem supported.

this userservice class:

public class userservice { private applicationcontext applicationcontext; private mongooperations mongooperations; public userservice() { applicationcontext = new annotationconfigapplicationcontext(mongoconfig.class); mongooperations = (mongooperations) applicationcontext.getbean("mongotemplate"); } public user find(string username) { homecoming mongooperations.findone(query.query(criteria.where("username").is(username)), user.class); } }

and securityconfig class:

@configuration @enablewebsecurity public class securityconfig extends websecurityconfigureradapter { @autowired userservice userservice; @autowired public void configauthbuilder(authenticationmanagerbuilder builder) throws exception { builder.userdetailsservice(userservice); //this not work builder.inmemoryauthentication().withuser("username").password("password").roles("user"); } }

the line commented says:

the inferred type userservice not valid substitute bounded parameter <t extends userdetailsservice>.

how can prepare can retrieve users own database?

service layer

you have create separate service implementing org.springframework.security.core.userdetails.userdetailsservice , inject within authenticationmanagerbuilder.

@component public class secuserdetailsservice implements userdetailsservice{ @autowired private userrepository userrepository; @override public userdetails loaduserbyusername(string username) throws usernamenotfoundexception { /*here add together user info layer fetching mongodb. have used userrepository*/ user user = userrepository.findbyusername(username); if(user == null){ throw new usernamenotfoundexception(username); }else{ userdetails details = new secuserdetails(user); homecoming details; } } }

model

userdetails should implemented. pojo maintain user authenticated details spring. may include entity info object wrapped within it, have done.

public class secuserdetails implements userdetails { private user user; public secuserdetails(user user) { this.user = user; } ...... ...... ...... }

security config

autowire service created before , set within authenticationmanagerbuilder

@configuration @enablewebsecurity public class securityconfig extends websecurityconfigureradapter { @autowired secuserdetailsservice userdetailsservice ; @autowired public void configauthbuilder(authenticationmanagerbuilder builder) throws exception { builder.userdetailsservice(userdetailsservice); } }

java spring mongodb spring-security mongodb-java

Comments

Popular posts from this blog

java - How to set log4j.defaultInitOverride property to false in jboss server 6 -

c - GStreamer 1.0 1.4.5 RTSP Example Server sends 503 Service unavailable -

Using ajax with sonata admin list view pagination -