我使用AngulaJS作为font-end,使用Sprint Boot作为后端。在这里,我正在使用REST API。为了构建注销服务,我已经按照以下教程进行了操作,但是它没有用。
我还看到了其他一些网页,基于这些教程,我构建了以下代码。但它没有用。我有4个浏览器。 IE,Microsoft Edge,Firefox和Chrome。大多数时候我使用谷歌浏览器。大多数时候谷歌Chrome都会出现问题。 我正在使用带有Tomcat服务器的Net-Beans IDE。
我也尝试过简单的" session.invalidate();"
@Override
protected void configure(HttpSecurity http) throws Exception
{
http
.httpBasic()
.and()
.authorizeRequests()
.antMatchers("/topics","/").permitAll()
.anyRequest().authenticated()
.and()
.logout()
.clearAuthentication(true)
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/topics")
// .deleteCookies("JSESSIONID")
// .deleteCookies("remember-me")
.deleteCookies()
.invalidateHttpSession(true);
}
当输入注销URL时," logoutSuccessUrl(" / topics")"正在工作,它正在返回数据。
在这里,我尝试了所有这些3" deleteCookies()"方法。
我也试过" Proggrammatically logout"正如其中一个教程所提到的那样。(第二个链接)
以编程方式注销
@RequestMapping(value = {"/logout"}, method = RequestMethod.POST)
public String logoutDo(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 "logout";
}