【问题标题】:Good way to handle sessions in Spring MVC在 Spring MVC 中处理会话的好方法
【发布时间】:2014-11-26 15:57:28
【问题描述】:

我想知道是否有比通过我的每个控制器方法运行这组代码更好的方法来处理处理会话。

public ModelAndView addUser(@RequestParam("userid") String userId,
        @RequestParam("passwd") String passwd,
        @RequestParam("usrtype") String usrtype,
        HttpSession session,
        Model model ){
    ModelAndView mav = new ModelAndView();
    if ((String) session.getAttribute("userId") == null) {
        model.addAttribute("msg", "Session was terminated.");
        model.addAttribute("url", "/login");
        mav.setViewName("redirect");            
        return mav;
    }
...

如何将其变成可重用的代码?

【问题讨论】:

  • 如果您想推出自己的安全层,请使用HandlerInterceptor,它将应用于所有处理程序(在本例中为控制器)。如果您想要一个完整的解决方案而不是自己使用 Spring Security。
  • 看看Spring Security

标签: java spring session model-view-controller


【解决方案1】:

有多种优化方法:

  • 保护请求是 Spring Security 的目的。 Spring Security 使用 Servlet 过滤器在请求到达您的控制器之前拦截(并拒绝)请求。因此您不必在控制器操作中处理与安全相关的代码

  • 如果出于某种原因,您可以/不想使用 Spring Security,您应该查看 Spring 的 MVC interceptions。在拦截器中,您可以放置​​需要在控制器操作之前和之后执行的代码。

  • 如果您总是需要设置相同的模型属性,您可以使用@ModelAttribute 注释方法。然后将为每个请求调用此方法以填充您的模型,请参阅ModelAttribute methods documentationControllerAdvice 类似,用于控制器以外的其他类应该提供模型信息的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 2020-12-16
    相关资源
    最近更新 更多