【问题标题】:Do I need to check for valid sessions in every controller in Spring? [closed]我是否需要检查 Spring 中每个控制器中的有效会话? [关闭]
【发布时间】:2023-03-08 03:33:02
【问题描述】:

假设在 Spring Mvc 的 Web 应用程序中,我们是否需要检查每个控制器或 jsps 中的有效会话?如何在 MVC 中解决这个会话管理问题?我们基本上做什么? 还有哪些可以为我的应用程序增加额外安全性的东西?

【问题讨论】:

  • 不清楚你在问什么。会话与应用程序中的安全性有何关系?
  • 如何实现会话管理?
  • 你的问题很模糊。但你可能会考虑查找 Spring Security。

标签: java spring spring-mvc spring-security


【解决方案1】:

我们通常会在过滤层检查session是否过期,并将其映射到DispatcherServlet,这样,所有将由spring处理的传入请求都会被首先过滤,从而不允许与spring进行任何交互如果会话已过期,则为控制器。如果发现会话过期,发送重定向到一个页面,用户将被告知他们的会话已经过期。

示例过滤器代码

public class MyFilter implements Filter{
    ...
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        if (isSessionExpired((HttpServletRequest) theRequest)) {
            response.sendRedirect(((HttpServletRequest) theRequest).getContextPath() + "/expired.jsp");
            response.flushBuffer();
        }else{
            //..its not yet expired, continue
            theChain.doFilter(theRequest, theResp);
        }
    }
    ...
}

映射到 web.xml 中的DispatcherServlet

    <filter>
        <filter-name>MyFilter</filter-name>
        <filter-class>com.mycompany.ourproject.filter.MyFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>MyFilter</filter-name>
        <servlet-name>springdispatcher</servlet-name>
    </filter-mapping>

    <servlet>
        <servlet-name>springdispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

【讨论】:

    【解决方案2】:

    您想在每个控制器的每个会话中检查授权或身份验证吗?你可以使用aspectj。

    【讨论】:

      【解决方案3】:

      你可以看一下spring的会话管理参考指南,配置非常简单,直接http://docs.spring.io/autorepo/docs/spring-security/3.0.x/reference/session-mgmt.html

      【讨论】:

        【解决方案4】:

        不,您不需要在 Spring 中检查每个控制器中的有效会话。

        Spring 框架使会话管理变得非常简单,因为您只需在单个 xml 文件中配置 spring 安全性,spring 将为您处理会话管理。

        Check out these examples on spring

        【讨论】:

          猜你喜欢
          • 2010-11-21
          • 1970-01-01
          • 1970-01-01
          • 2011-04-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多