Я сталкиваюсь с проблемой выхода из системы. Я знаю, что есть другие статьи по этой проблеме, но они не похожи на мои обстоятельства. Сначала я просто использую SecurityContextHolder.clearContext () в бэкэнде, но он поддерживает сессию живой, затем я продолжаю аннулировать сессию и устанавливаю для любого существующего возраста файлов cookie значение 0. Но я сталкиваюсь с другой проблемой, как описано ниже.
org.springframework.web.util.NestedServletException: обработка запроса не удалась;Вложенное исключение - java.lang.NullPointerException в org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:982) в org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkSax.vavlet.66).http.HttpServlet.org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:231) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в org.apversoF.catdoFilter (WsFilter.java:52) по адресу org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) по адресу org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilg: 16): atfg.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:320) в org.springframework.security.web.access.intercept.91) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:334) в org.springframework.security.web.access.ExceptionTranslationFilter.doFilter.doFwork..f..web.(FilterChainProxy.java:334) в org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter (AnonymousAuthenticationFilter.java:111) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:334) в org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter (SecurityContextHolderAwareRequestFilter.java:1334) по адресу org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter (RequestCacheAwareFilter.java:63) по адресу org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter.raf.service.rag.fag.rag.fag.fag.jpg.hag..web.authentication.www.BasicAuthenticationFilter.(FilterChainProxy.java:334) в org.springframework.security.web.authentication.logout.LogoutFilter.doFilter (LogoutFilter.java:116) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:334) по адресу org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal (HeaderWriterFilter.javaestest.ReterFerterFerterFerter)Ява: 107) вorg.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:334) в org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter (SecurityConteser.we.f.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:334) по адресу org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal (WebAsyncManagerIntegOncePerRequestFilter.java:107) по адресу org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:334) по адресу org.springframework.security.web.FilterChainProworkfraf.prg.security.web.FilterChainProxy.doFilter (FilterChainProxy.java:178) в org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java:357) в org.springframework.web.filter.DelegatingFilterProxy.doFilter (DelegatingFilterProxy.java:270) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) в org.apache.catalinaFilter.Fter.Filter.Fter.Java: 166) в org.springframework.web.filter.RequestContextFilter.doFilterInternal (RequestContextFilter.java:99) в org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequest: 10.cat.j.at.cat)..ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в org.springframework.web.filter.orm.HFFilterFutterFutterPutorg.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:19aporecat) в org.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal (HiddenHttpMethodFilter.java:93) в org.springfilerorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) на веб-сайте org.sprition.doFilterInternal (SessionRepositoryFilter.java:147) в org.springframework.session.web.http.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:81) в org.apache.catalina.core.ApplicationFilterF (.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) в org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:200) в org.springk.web.filter.OncePerRequestFilter.Java: 166) в com.bookstore.config.RequestFilter.doFilter (RequestFilter.java:30) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) в org.apache.cathappin.Filter..doFilter (ApplicationFilterChain.java:166) в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:198) в org.apache.catalina.core.StandardContextValve.invoke (Standardjtev):org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:493) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:140) в org.apache.catalina.valkeEErrorReportValve.java:81) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:87) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:342) в org.ap.http11.Http11Processor.service (Http11Processor.java:800) в org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66) в org.apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.j)org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1498) в org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:49) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624)в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:748). Вызывается: java.lang.NullPointerException в com.bookstore.controller..java: 43) в java.lang.reflect.Method.invoke (Method.java:498) в org.springframework.web.method.support.InvocableHandlerMethod.doInvoke (InvocableHandlerMethod.java:209) в org.spring.method.support.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod (RequestMappingHandlerAdapter.java:891) в org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal (RequestMappingHandlerAdapter.java:797) в org.springfhodhoho.HetJava: 87) в org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:991) в org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:9web.rag.web.web или org)..FrameworkServlet.processRequest (FrameworkServlet.java:974)
Когда я выхожу из системы, я использую этот сервис в угловом формате:
logout(){
let url="http://localhost:8090/user/logout";
const xToken = localStorage.getItem('xAuthToken');
let headers=new Headers({
'x-auth-token':xToken
});
return this.http.post(url,'',{headers:headers});
}
В бэкэнде я хотел бы очистить всеактивные сеансы и файлы cookie, используя этот метод при выходе из системы:
@RequestMapping(value = "/user/logout",method=RequestMethod.POST)
public ResponseEntity logout(HttpServletRequest request, HttpServletResponse response) {
HttpSession session= request.getSession(false);
SecurityContextHolder.clearContext();
session= request.getSession(false);
if(session != null) {
session.invalidate();
}
for(Cookie cookie : request.getCookies()) {
cookie.setMaxAge(0);
}
return new ResponseEntity("Logout Successful !", HttpStatus.OK);
}
Когда я отлаживаюсь, он вырывается в первой строке, содержащей сессию HttpSession , затем я предполагаю, что запрос .getSession (false) return null. Это предположение может быть ложным или истинным, я не уверен.
Я благодарен за любую помощь. Заранее спасибо за сотрудничество.