MENU

session过期登陆重新跳转

• December 18, 2019 • Read: 121 • 学习生涯

这几天在给朋友写项目代码的时候,遇到了session过期之后,页面不进行跳转的问题

我将分为SSM框架与SpringBoot两个来谈谈这个应该怎么修改

一、SSM框架

修改配置

SSM框架中我们一般都是在web.xml中配置session过期时间

<session-config>
    <session-timeout>15</session-timeout>
</session-config>

配置好session时间之后,我们就可以开始写我们的拦截器

public class SpringMVCInterceptor implements HandlerInterceptor
/*
 * 记得一定要实现HandlerInterceptor接口
 * 在此类中去书写preHandle方法
*/

写好拦截器之后我们需要去SpringMvc配置文件中进行修改

<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/dologin"/>
<!--如上边所示,将我们拦截的配置出来  并筛选出不拦截的-->

到此步,我们得拦截器就配置好了。

二、SpringBoot

先修改application. properties文件

#设置超时时间
server.servlet.session.timeout=10

添加拦截器

/**
 * 定义拦截器
 */
@Component
public class ConfigInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        // 从session中获取用户信息
        Student comUser = (Student) session.getAttribute("user");

        System.out.println(comUser);
        // session过期
        if(comUser == null){
            response.sendRedirect("/doLogin");
            return false;
        }else{
            return true;
        }
    }
}

配置拦截信息

@Configuration
public class WebMvcConf extends WebMvcConfigurerAdapter {

    /**
     * 注入第一步定义好的拦截器
     */
    @Autowired
    private ConfigInterceptor configInterceptor;

    /**
     * 定义拦截规则, 根据自己需要进行配置拦截和排除的接口
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(configInterceptor)
                // .addPathPatterns() 是配置需要拦截的路径
                .addPathPatterns("/**")
                // .excludePathPatterns() 用于排除拦截
                .excludePathPatterns("/") // 排除127.0.0.1进入登录页
                .excludePathPatterns("/code") // 排除登录页获取验证码接口
                .excludePathPatterns("/loginVerify") // 排除验证账号密码接口
                .excludePathPatterns("/outToLogin")
                .excludePathPatterns("/lib/**") // 排除静态文件
                .excludePathPatterns("/js/**")
                .excludePathPatterns("/img/**")
                .excludePathPatterns("/doLogin")
                .excludePathPatterns("/css/**");
    }
}

讲解完毕 ::weibo:aoteman::(BiuBiuBiu)

Last Modified: June 23, 2020