Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用SpringWebMVC实现注销特性_Java_Spring_Spring Mvc - Fatal编程技术网

Java 如何使用SpringWebMVC实现注销特性

Java 如何使用SpringWebMVC实现注销特性,java,spring,spring-mvc,Java,Spring,Spring Mvc,我是SpringWebMVC的新手 我可以得到一些示例或在线链接来演示如何使用SpringWebMVC实现注销功能吗 我不想使用SpringSecurity(即ACEGI)的内置功能 提前感谢…您只需使会话无效,用户即可注销。servlet api直接支持这一点:。您可以编写一个只调用invalidate的控制器 class Logout implements Controller{ public ModelAndView handleRequest(HttpServletRequest re

我是SpringWebMVC的新手

我可以得到一些示例或在线链接来演示如何使用SpringWebMVC实现注销功能吗

我不想使用SpringSecurity(即ACEGI)的内置功能


提前感谢…

您只需使会话无效,用户即可注销。servlet api直接支持这一点:。您可以编写一个只调用invalidate的控制器

class Logout implements Controller{
 public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response){
   ModelAndView view = //?;
   request.getSession().invalidate();
   return view;
 }      
}

会话无效的技巧不起作用。Spring身份验证似乎将会话ID缓冲在某个位置,即使会话无效,也会接受COOKIE

另一种解决方案是手动清除Spring安全上下文:

public void manualLogout() {
    SecurityContextHolder.getContext().setAuthentication(null);
}
下面是代码,如何手动登录用户(如果有人需要):

其中authenticationProvider是spring配置中实现的bean

org.springframework.security.authentication.AuthenticationProvider

请使用上述代码实现注销过滤器

如果会话仍处于活动状态,您可以使用getSession()进行检查。或者在会话中查看身份验证信息。您必须在拦截器或每个控制器中执行此操作。您可能还需要清除您设置的任何cookie,以支持“记住我”功能。否则,您将在下次访问该站点时立即重新登录。会话过期时,它将如何重定向到登录页面。请您提供另一个场景。
org.springframework.security.authentication.AuthenticationProvider
@Controller
    public class LogoutController {

        @RequestMapping(value="/logout",method = RequestMethod.GET)
        public String logout(HttpServletRequest request){
            HttpSession httpSession = request.getSession();
            httpSession.invalidate();
            return "redirect:/";
        }

    }