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
Post a Comment