【发布时间】:2018-02-10 17:36:41
【问题描述】:
有人可能会说这是一个重复的问题,但我查看了很多答案,尝试了很多方法但无法理解我错过了什么。
我在我的 REST 服务器中使用了非常基本的 Spring Security。当我第一次直接从浏览器向 localhost:.../getData 向我的服务器发出请求时,我当然会被要求授权。
然后服务器每次都允许这个请求。如何注销以便下一个请求再次需要授权?
现在我尝试在我的服务器上使用几种方法进行注销:
@RequestMapping(value = "/logoutMe2", method = RequestMethod.GET)
public void logout2() {
SecurityContextHolder.getContext().setAuthentication(null);
}
@RequestMapping(value = "/logoutMe3", method = RequestMethod.GET)
public void logout3() {
SecurityContextHolder.clearContext();
}
@RequestMapping(value = "/logoutMe", method = RequestMethod.GET)
public void logout(HttpServletRequest rq, HttpServletResponse rs) {
SecurityContextLogoutHandler securityContextLogoutHandler =
new SecurityContextLogoutHandler();
securityContextLogoutHandler.logout(rq, rs, null);
}
@RequestMapping(value = "/logoutMe4", method = RequestMethod.GET)
public static void myLogoff(HttpServletRequest request, HttpServletResponse response) {
CookieClearingLogoutHandler cookieClearingLogoutHandler = new CookieClearingLogoutHandler(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY);
SecurityContextLogoutHandler securityContextLogoutHandler = new SecurityContextLogoutHandler();
cookieClearingLogoutHandler.logout(request, response, null);
securityContextLogoutHandler.logout(request, response, null);
}
如果我使用直接链接
我收到 Not Found 错误。
我错过了什么?好像忘记了什么明显的事情……
【问题讨论】:
-
Basic 会随每个请求重新发送您的凭据。您的浏览器仍在发送它们。
标签: java spring spring-security