2017-01-08 3 views
5

मुझे लगता है कि मैं MongoDB मेरी बैकएंड के रूप में उपयोग करने के लिए कोशिश कर रहा हूँ https://github.com/szerhusenBC/jwt-spring-security-demo/ से इस नमूने उदाहरण है कैसे शामिल हो सकता है, लेकिन मैं JwtUserFactory.java में कोड की वजह से त्रुटि मिल रही हैमैं दो संग्रह ManyToMany (RDBMS) के रूप में वसंत-डेटा-mongdb

return authorities.stream() 
       .map(authority -> new SimpleGrantedAuthority(authority.getName().name())) 
       .collect(Collectors.toList()); 

इसका जो उपयोग आरडीबीएमएस मिलती है, लेकिन मैं MongoDB उपयोग कर रहा हूँ और मेरे कोड में त्रुटि मिल रही है model.security पैकेज में Authority & User वर्ग की वजह से। मेरे पास Authority & User नीचे मोंगोड के लिए परिभाषित किया गया है। किसी को भी काम कर

Authority.java

@Document(collection = "authority") 
public class Authority { 

    @Id 
    private Long id; 

    private AuthorityName name; 

    @DBRef(lazy = true) 
    private List<User> users; 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public AuthorityName getName() { 
     return name; 
    } 

    public void setName(AuthorityName name) { 
     this.name = name; 
    } 

    public List<User> getUsers() { 
     return users; 
    } 

    public void setUsers(List<User> users) { 
     this.users = users; 
    } 
} 

User.java

@Document(collection = "user") 
public class User { 

    @Id 
    private Long _id; 

    private String username; 

    private String password; 

    private String firstname; 

    private String lastname; 

    private String email; 

    private Boolean enabled; 

    private Date lastPasswordResetDate; 

    @DBRef(lazy = true) 
    private List<Authority> authorities; 

    public Long getId() { 
     return _id; 
    } 

    public void setId(Long id) { 
     _id = id; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getFirstname() { 
     return firstname; 
    } 

    public void setFirstname(String firstname) { 
     this.firstname = firstname; 
    } 

    public String getLastname() { 
     return lastname; 
    } 

    public void setLastname(String lastname) { 
     this.lastname = lastname; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public Boolean getEnabled() { 
     return enabled; 
    } 

    public void setEnabled(Boolean enabled) { 
     this.enabled = enabled; 
    } 

    public List<Authority> getAuthorities() { 
     return authorities; 
    } 

    public void setAuthorities(List<Authority> authorities) { 
     this.authorities = authorities; 
    } 

    public Date getLastPasswordResetDate() { 
     return lastPasswordResetDate; 
    } 

    public void setLastPasswordResetDate(Date lastPasswordResetDate) { 
     this.lastPasswordResetDate = lastPasswordResetDate; 
    } 
} 

UserRepository.java पाने के लिए मुझे मार्गदर्शन कर सकते हैं

public interface UserRepository extends MongoRepository<User, Double> { 
    User findByUsername(String username); 
} 

अपवाद

नीचे मैं

org.springframework.security.authentication.InternalAuthenticationServiceException: null 
    at org.springframework.security.authentication.dao.DaoAuthenticationProvider.retrieveUser(DaoAuthenticationProvider.java:126) ~[spring-security-core-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:144) ~[spring-security-core-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:174) ~[spring-security-core-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.parkcity.security.controller.AuthenticationRestController.createAuthenticationToken(AuthenticationRestController.java:44) ~[classes/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111] 
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111] 
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:220) ~[spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:134) ~[spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) ~[spring-webmvc-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) ~[tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-embed-websocket-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) ~[spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) ~[spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115) ~[spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.parkcity.security.JwtAuthenticationTokenFilter.doFilterInternal(JwtAuthenticationTokenFilter.java:58) [classes/:na] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:121) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) [spring-security-web-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:89) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_111] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_111] 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.6.jar:8.5.6] 
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_111] 
Caused by: java.lang.NullPointerException: null 
    at org.parkcity.security.JwtUserFactory.mapToGrantedAuthorities(JwtUserFactory.java:31) ~[classes/:na] 
    at org.parkcity.security.JwtUserFactory.create(JwtUserFactory.java:24) ~[classes/:na] 
    at org.parkcity.security.service.JwtUserDetailsServiceImpl.loadUserByUsername(JwtUserDetailsServiceImpl.java:25) ~[classes/:na] 
    at org.springframework.security.authentication.dao.DaoAuthenticationProvider.retrieveUser(DaoAuthenticationProvider.java:114) ~[spring-security-core-4.1.4.RELEASE.jar:4.1.4.RELEASE] 
    ... 93 common frames omitted 

2017-01-13 00:04:11.543 DEBUG 30067 --- [nio-8080-exec-1] o.s.s.w.a.ExceptionTranslationFilter  : Calling Authentication entry point. 
2017-01-13 00:04:11.544 DEBUG 30067 --- [nio-8080-exec-1] o.s.s.w.header.writers.HstsHeaderWriter : Not injecting HSTS header since it did not match the requestMatcher org.springframework.se[email protected]12337118 
2017-01-13 00:04:11.544 DEBUG 30067 --- [nio-8080-exec-1] s.s.w.c.SecurityContextPersistenceFilter : SecurityContextHolder now cleared, as request processing completed 
+0

आपको क्या त्रुटि मिलती है? आपके पास जो कोड नहीं है वह किसी भी संग्रह में शामिल होने जा रहा है। – Veeram

+0

@SagarReddy कृपया अपडेट करें – user525146

उत्तर

5

मिल असल में आपके कोड के साथ एक से अधिक एकल समस्या है अपवाद नहीं है। सबसे पहले जिस परियोजना का आप उल्लेख कर रहे हैं वह जेपीए (जो डेटाबेस से संबंधित है) के आधार पर बनाया गया है और यदि आप मोंगो डीबी (दस्तावेज़ स्टोर) के साथ एक ही कोड बेस का उपयोग करना चाहते हैं तो कम से कम आपको डेटा मॉडल पर पुनर्विचार करना होगा (उपयोगकर्ता और प्राधिकरण)। लेकिन सबसे पहले इस उदाहरण को काम करने की कोशिश करते हैं और अंत में मैं सलाह दूंगा कि क्या बदल सकता है।

आप डोमेन वस्तु id क्षेत्रों बेहतर अनुभव के लिए MongoDB उपयोग कर रहे हैं सब है, एक स्ट्रिंग प्रकार होना चाहिए जैसा कि आप जानते MongoDB ObjectId bson प्रकार है जो लंबे समय में परिवर्तित नहीं किया जा सकता है के रूप में आईडी संग्रहीत करता है सबसे पहले। तो पहली बार में User.java

@Document(collection = "user") 
public class User { 

    @Id 
    private String _id; 

    // bla bla bla 
} 

ही में प्राधिकरण वस्तु

@Document(collection = "authority") 
public class Authority { 

    @Id 
    private String _id; 

    // TODO remove this right now !!! :) 
    @DBRef(lazy = true) 
    private List<User> users; 

    // bla bla bla 
} 

और UserRepository

public interface UserRepository extends MongoRepository<User, String> { 
    User findByUsername(String username); 
} 

के साथ इस दो परिवर्तन आप के रूप में अच्छी संदर्भ refactor करने की आवश्यकता होगी के बाद बदल जाते हैं।

आपके पास अधिकारियों से उपयोगकर्ताओं का संदर्भ है? !!! वह क्या है ? :) यह जेपीए से कुछ है, मोंगो डीबी के साथ इस संदर्भ में कोई मतलब नहीं है। बस इसे हटा दें !!

प्रोजेक्ट के साथ अगली बात यह है कि यह इस तथ्य पर निर्भर करता है कि डेटास्टोर में कुछ पूर्वनिर्धारित डेटा import.sql देखता है, इसलिए मोंगो डीबी के लिए आपको परियोजना को चलाने में सक्षम होने के लिए मोंगोडब में डेटा आयात करने की आवश्यकता है। मैंने import.sql को MongoShell प्रारूप में परिवर्तित कर दिया है ताकि आप इसका उपयोग कर सकें।

सम्मिलित इस authority संग्रह में: user संग्रह में

{ 
    "_id" : ObjectId("587cb19d1db2732183afb0a9"), 
    "_class" : "org.parkcity.model.security.Authority", 
    "name" : "ROLE_ADMIN" 
} 
{ 
    "_id" : ObjectId("587cb19d1db2732183afb0aa"), 
    "_class" : "org.parkcity.model.security.Authority", 
    "name" : "ROLE_USER" 
} 

सम्मिलित करें:

{ 
    "_id" : ObjectId("587cb19d1db2732183afb0ab"), 
    "_class" : "org.parkcity.model.security.User", 
    "username" : "admin", 
    "password" : "$2a$08$lDnHPz7eUkSi6ao14Twuau08mzhWrL4kyZGGU5xfiGALO/Vxd5DOi", 
    "firstname" : "admin", 
    "lastname" : "admin", 
    "email" : "[email protected]", 
    "enabled" : true, 
    "lastPasswordResetDate" : ISODate("2017-01-16T11:42:21.537+0000"), 
    "authorities" : [ 
     DBRef("authority", ObjectId("587cb19d1db2732183afb0a9")), 
     DBRef("authority", ObjectId("587cb19d1db2732183afb0aa")) 
    ] 
} 
{ 
    "_id" : ObjectId("587cb1a11db2732183afb0ac"), 
    "_class" : "org.parkcity.model.security.User", 
    "username" : "user", 
    "password" : "$2a$08$UkVvwpULis18S19S5pZFn.YHPZt3oaqHZnDwqbCW9pft6uFtkXKDC", 
    "firstname" : "user", 
    "lastname" : "user", 
    "email" : "[email protected]", 
    "enabled" : true, 
    "lastPasswordResetDate" : ISODate("2017-01-16T11:42:21.620+0000"), 
    "authorities" : [ 
     DBRef("authority", ObjectId("587cb19d1db2732183afb0aa")) 
    ] 
} 

आप देख सकते हैं मैं "org.parkcity में" org.zerhusen "से संकुल समायोजित किया है "।

यह बात करता है, अब आप प्रोजेक्ट शुरू कर सकते हैं और कुछ परीक्षण कर सकते हैं। जैसा कि आप देख सकते हैं कि मैंने अक्षम उपयोगकर्ता को नहीं जोड़ा है (इसलिए आप इसे स्वयं ही कर सकते हैं)।

और @DBRefs का उपयोग करके इस विशेष मामले के लिए केवल आपके विचारों के लिए शुद्ध बुराई है :) आप MogoDb पर हैं इसलिए उपयोगकर्ताओं को समान संग्रह और ऑब्जेक्ट में उपयोगकर्ताओं को स्टोर करें, इस तरह यह बहुत तेज़ होगा।

इसके अलावा एक पूरी तरह कार्यात्मक कांटा (MongoDB के आधार पर) जो यहाँ उपलब्ध हैhttps://github.com/babltiga/jwt-spring-security-demo

+0

उत्तर के लिए बहुत बहुत धन्यवाद। यह एक सम्मोहन की तरह काम करता है। मैं इस कोड को माइक्रोस्कोप आर्किटेक्चर में बदलने की योजना बना रहा हूं। क्या आपके पास माइक्रोस्कोर्सेस – user525146

+0

के लिए वर्तमान प्रोजेक्ट का उपयोग कैसे किया जा सकता है इस बारे में कोई सुझाव या विचार है, मैं कहूंगा कि आपको प्रमाणीकरण के लिए एक माइक्रो सेवा की आवश्यकता है, यह एक ही सेवा है जो उपयोगकर्ता नाम/पासवर्ड जोड़े ले जाएगी और जेडब्ल्यूटी टोकन लौटाएगी। उस विशेष मामले के लिए, आपको वसंत सुरक्षा की भी आवश्यकता नहीं है। और अन्य सभी माइक्रो सेवाओं के लिए आपको स्प्रिंग सिक्योरिटी की आवश्यकता होगी जो सुनिश्चित करेगा कि जेडब्ल्यूटी टोकन मान्य हैं और उपयोगकर्ता सेवा तक पहुंचने के लिए अधिकृत है। कुछ इस तरह .... :) – Babl

1

MongoDB जा रहा है दस्तावेज़-आधारित भंडारण एक अलग मॉडलिंग मानसिकता से आप एसक्यूएल में के आदी हैं की आवश्यकता है बनाया।

ऊपर मामले में, के बाद से इस तरह के प्राधिकरण एक छोटे वस्तु है, मैं सिर्फ एक

List<String> authorities 
उपयोगकर्ता में

शामिल था। फिर आपके पास एक भी संग्रह है जो सभी क्रुफ्ट के बिना है जो संदर्भित अखंडता रखने के साथ जुड़ा हुआ है और प्रदर्शन को भी बढ़ावा देता है।

डाउनसाइड यह है कि जब प्राधिकरण बदलते हैं, अर्थात्, नाम बदलने या हटाने पर, आपको सभी उपयोगकर्ता दस्तावेजों को अपडेट करने की आवश्यकता होगी, लेकिन आपके डेटा मॉडल का निर्धारण करना होगा, जो अक्सर नहीं होता है।

संबंधित मुद्दे