精华内容
下载资源
问答
  • java  public class SessionFilter... // 这里写Session超时后的处理方法 $.alert.open({ type: 'warning', content: '登录超时,请重新登录!', callback(e) { location.href=rootPath+"/login"; } }); } });

    java  

    public class SessionFilter extends OncePerRequestFilter{

    protected static final String[] allowUrls={"js","css","font","html","login","Login","jpg"};
    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
    throws ServletException, IOException {
    // TODO Auto-generated method stub
    String requestUrl = request.getRequestURI();
    System.out.println(requestUrl);

    for (String url : allowUrls) {
    if (requestUrl.contains(url)) {
    filterChain.doFilter(request, response);
    }
    }
    //获取Session
    HttpSession session = request.getSession();
    MerchantInfo merchantInfo = (MerchantInfo)session.getAttribute("merchantInfo");

    String requestType = request.getHeader("X-Requested-With");//识别ajax的响应头
    if(merchantInfo==null){
    if (requestType != null && requestType.equals("XMLHttpRequest")) {//如果是ajax类型,响应logout给前台
    response.setHeader("sessionstatus", "timeout");
    }else{
    try {
    throw new SessionTimeoutException();
    } catch (SessionTimeoutException e) {

    }// 返回到配置文件中定义的路径
    }

    }else{
    filterChain.doFilter(request, response);
    }
    }

    js

    $(document).ajaxComplete(function(event, response, settings) {

    var sessionstatus = response.getResponseHeader("sessionstatus");
    if(sessionstatus != null && typeof sessionstatus != "undefined" && sessionstatus.length > 0){
    // 这里写Session超时后的处理方法
    $.alert.open({
    type: 'warning',
    content: '登录超时,请重新登录!',
    callback(e) {
    location.href=rootPath+"/login";
    }
    });
    }
    });



    展开全文
  • kilo版本的openstack在正常登陆后长时间不做任何操作,dashboard会超时重新登录会报如下错误: 2、原因: python-django的版本太高,需要降到1.8以下 3、解决办法: a、卸载django的rpm包# rpm -aq | grep ...

    作者:【吴业亮】云计算开发工程师
    博客:http://blog.csdn.net/wylfengyujiancheng
    1、现象描述:
    kilo版本的openstack在正常登陆后长时间不做任何操作,dashboard会超时,重新登录会报如下错误:

    这里写图片描述
    2、原因:
    python-django的版本太高,需要降到1.8以下
    3、解决办法:
    a、卸载django的rpm包

    # rpm -aq | grep python-django-1.  | xargs rpm -evh --nodeps

    b、安装1.6的rpm包
    下载路径:链接:http://pan.baidu.com/s/1pJMlJh5 密码:uzsd

    # rpm -ivh python-django-1.6.11-3.el7.noarch.rpm  --nodeps

    c、重启http服务

    # service httpd restart

    d、问题解决。

    展开全文
  • 过期时间为30分钟,在login操作时,给session设置值,在springmvc拦截器中进行登录拦截,判断session是否存在,存在放行,不存在请求报错,返回401,前端捕获异常401,进行页面的重新跳转,重新登录。 @...

    原理:session会话存储在服务器上,过期时间为30分钟,在login操作时,给session设置值,在springmvc拦截器中进行登录拦截,判断session是否存在,存在放行,不存在请求报错,返回401,前端捕获异常401,进行页面的重新跳转,重新登录。

    登陆超时转载:https://blog.csdn.net/qq_27610601/article/details/81353027,里面使用的是redis存储token,设置过期时间

    @RestController
    @RequestMapping("/login")
    public  class Login11Controller {
        @Autowired
        private LoginService loginService;
    
        @PostMapping("/checkLogin")
        public Map<String, Object> login(@RequestBody Map<String,String> map, HttpSession session) {
            String account=map.get("account");
            String password=map.get("password");
            Map<String, Object> response = new HashMap<>();
            Hr login = loginService.checkLogin(account);
            if (null == login) {
                response.put("data", 3);
                return response;
            }
            if(!login.getEnabled()){//账号不可
                response.put("data",4);
                return response;
            }
            String pwd = login.getPassword();
            String pwd2Md5 = CommonUtils.parsePwd2Md5(password);
            if (pwd == null) {
                response.put("data", 3);
                return response;
            }
            if (!pwd.equals(pwd2Md5)) {
                response.put("data", 2);
                return response;
            }
            String token = UUID.randomUUID().toString();
            //设置session,当30分钟未操作,将重新登录
            session.setAttribute(account+login.getWorkId(),token);
            //session.setMaxInactiveInterval(30*60); //30分钟
            response.put("data", 1);
            response.put("hr", login);
            response.put("token",token);
            return response;
        }
    
    }

    拦截器:参考内容https://www.jianshu.com/p/51c5193b5883 

    /**
     * @Author:xuexia
     * @Date:2020/6/4
     * @Description: 拦截器的本质就是AOP面向切面编程
     */
    @Slf4j
    public class LoginInterceptor implements HandlerInterceptor {
    
        /**
         *预处理回调方法,实现处理器的预处理(如登录检查)。
         *第三个参数为响应的处理器,即controller。
         *返回true,表示继续流程,调用下一个拦截器或者处理器。
         *返回false,表示流程中断,通过response产生响应。
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
            Map<String, String> login = CookieUtils.getCookieValue(request);
            log.info("开始登录了");
            if (login == null|| login.size()<1) {
                log.info("该请求已被拦截......");
                response.setStatus(401);
                return false;
            }
    
            //若token不相等,则前端获取不到后端的请求,页面内容显示为空
            String token = (String) request.getSession().getAttribute(login.get("user")+login.get("workID"));
            if (login.get("token").equals(token)) {
                log.info("登陆成功......");
                return true;
            }
            log.info("该请求已被拦截......2");
            response.setStatus(401);
            return false;
        }
    }

    SpringMVCConfig配置:

    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer {
    
        /**
         * 在发送请求前进行拦截
         * 自定义拦截规则
         *
         * @param registry
         */
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            // addPathPatterns - 用于添加拦截规则
            // excludePathPatterns - 用户排除拦截
            // addInterceptor - 注册器拦截
            registry.addInterceptor(new LoginInterceptor())
                    .addPathPatterns("/**")
                    /*.excludePathPatterns("/emp/*")
                    .excludePathPatterns("/depts/**")
                    .excludePathPatterns("/sys/*")
                    .excludePathPatterns("/recruit/*")
                    .excludePathPatterns("/recruit/*")
                    .excludePathPatterns("/salper/*")*/
                    .excludePathPatterns("/upload/excel")
                    .excludePathPatterns("/login/*");
    
        }
    }
    

    捕获401status:

                  await this.$http.post(
                  WEB_URL+"/salary/salperput",this.salary)
                  .then(res => {
                    //console.log(res.data)
                    if(res.data.state!=0){
                      this.initSalaries();
                      this.$message.success("工资数据修改成功!");
                      this.dialogVisible = false;
                    }else{
                      this.$message.error("工资数据修改失败!");
                    }
                  }).catch(err=>{
                    if(err.response.status == 401) {
                      this.$router.push("/")
                    }
                  })

     

    展开全文
  • Struts2的Session超时返回登录页面

    千次阅读 2016-03-21 14:13:15
    session超时或者失效时返回到登陆页面重新登陆,前台使用的easyui框架

    今天做一个S2SM的项目时,在session超时或者失效时返回到登陆页面重新登陆,前台使用的easyui框架

    1、首先修改web.xml

      <session-config>

       <session-timeout>1</session-timeout>

      </session-config>

    2、自定义一个登录超时的拦截器

    package com.tungkong.util;

    import java.util.Hashtable;

    import javax.servlet.http.HttpServletResponse;

    import org.apache.struts2.ServletActionContext;

    import com.opensymphony.xwork2.ActionInvocation;

    import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

     

    @SuppressWarnings("serial")

    public class LoginedCheckInterceptor extends AbstractInterceptor {

    /** session过期、登录有效性及操作的权限验证拦截器 */

    @SuppressWarnings("unchecked")

    @Override

    public String intercept(ActionInvocation ai) throws Exception {

      //取得请求的URL  

    String url = ServletActionContext.getRequest().getRequestURL().toString();

    HttpServletResponse response = ServletActionContext.getResponse();

    response.setHeader("Pragma""No-cache");

    response.setDateHeader("Expires", 0);

    response.setHeader("Cache-Control""no-cache");

    response.setHeader("Cache-Control""no-store");

    response.setHeader("Content-Type""text/html; charset=UTF-8");

    response.setHeader("Cache-Control""no-store");

    response.setHeader("Content-Type""text/html; charset=UTF-8");

    Hashtable<String, Object> userinfo = null;

    //对登录与注销请求直接放行,不予拦截

    if (url.indexOf("loginAction") != -1 || url.indexOf("logoutAction") != -1) {

    return ai.invoke();

    else {

    //验证Session是否过期

    if (!ServletActionContext.getRequest().isRequestedSessionIdValid()) {

    //session过期,转向session过期提示页,最终跳转至登录页面

    return "tologin";

    else {

    //验证是否已经登录

    userinfo = (Hashtable<String, Object>) ServletActionContext.getRequest().getSession().getAttribute("userSessionHt");

    if (userinfo == null) {

      //尚未登录,跳转至登录页面

    return "tologin";

    else {

    return ai.invoke();

    }

    }

    }

    }

    }

     

    3、在struts.xml中配置拦截器,并声明一个全局的result,当session失效的时候拦截器会转发到登陆页面,由于我使用的是多个struts文件,故应该这么设置

    <?xml version="1.0" encoding="UTF-8" ?>

    <!DOCTYPE struts PUBLIC

        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

        "http://struts.apache.org/dtds/struts-2.0.dtd">

    <struts>

    <!-- 加载默认的 struts2 配置文件 -->

     <include file="struts-default.xml" />

     <!-- 业务模块配置 -->

    <include file="struts-userinfo.xml" />

    ……………… 

    <constant name="struts.i18n.encoding" value="UTF-8" />

    <constant name="struts.objectFactory" value="spring"></constant>

        

    <package name="tksm" extends="struts-default">

    <interceptors>

     <interceptor name="loginedCheck" class="com.tungkong.util.LoginedCheckInterceptor" />

     <interceptor-stack name="mystack">

      <interceptor-ref name="loginedCheck" />

      <interceptor-ref name="defaultStack" />

    </interceptor-stack>

    </interceptors>

     <global-results>

    <result name="exception">/exception.jsp</result>

    <result name="tologin">/relogin.jsp</result>

    </global-results>

    <global-exception-mappings>

    <exception-mapping exception="java.lang.Exception" result="exception" />

    </global-exception-mappings>    

    </package>

    </struts>  

     

    4、在struts-userinfo.xml中设置

    <?xml version="1.0" encoding="UTF-8" ?>

    <!DOCTYPE struts PUBLIC

        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

        "http://struts.apache.org/dtds/struts-2.0.dtd">

    <struts>

     

    <package name="tksm-user" extends="tksm">

    <default-interceptor-ref name="mystack" />

     

            <action name="loginAction" class="userAction" method="login">

                <result name="success">/WEB-INF/index/main.jsp</result>

                <result name="error">/WEB-INF/index/error.jsp</result>

            </action>

    ……………………

        </package>

    </struts> 

     

    5、新建relogin.jsp页面

    由于页面嵌套在iframe下,跳转时需要跳转到其父页面,因此加个中间的jsp,拦截器配置跳转到此页面,再由此页面跳转到登录页面。

    relogin.jsp

     

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

    <%

    String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

    %>

     

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

      <head>

        <base href="<%=basePath%>">

        

        <title>My JSP 'index.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">    

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

    <!--

    <link rel="stylesheet" type="text/css" href="styles.css">

    -->

      </head>

      

      <body>

        <script type="text/javascript">

         alert("对不起!您长时间对系统未进行操作,登录已超时,请重新登录!");

         window.top.location.href="<%=basePath%>login.jsp";

        </script>

      </body>

    </html>

    当我们登陆后一分钟不做任何操作刷新后则会跳转到登陆页面

    这篇博客主要来源于:

    http://blog.csdn.net/java_cxrs/article/details/5519743

    http://blog.sina.com.cn/s/blog_a72f208a01014gha.html

    感谢两位!

    展开全文
  • 一、Session超时管理 在实际网站用户登陆后,在浏览其他页面过程中,可能中间会有其他事情停顿,一段时间内没有对该网站页面再次发送请求访问,待到一定时间过后(即保存登陆用户信息的session超时),当该用户再次...
  • 一:前言:最近支付后台登录一段时间后如果没有任何操作,总是需要重新登录才可以继续访问页面,出现这个问题的原因就是session超时,debug代码后发现session的超时时间是1800s。也就是说当1800秒内没有任何操作,...
  • session 超时

    2011-09-24 09:02:06
    session超时转到登录页面的解决方案12011-06-24 15:45 对于web应用系统,通常会有以下场景:session超时之后,用户在浏览器中发出请求时将作出session超时的判断,然后系统跳转到登陆页面,提示用户重新登录。...
  • kilo版本的openstack在正常登陆后长时间不做任何操作,dashboard会超时重新登录会报如下错误: 2、原因: python-django的版本太高,需要降到1.8以下 3、解决办法: a、卸载django的rpm包 rpm -aq |...
  • 当用户登陆后,session超时后则返回到登陆页面重新登陆。 为了方便测试,修改session的有效时间 <session-config>女装品牌排行榜 <session-timeout>1</session-timeout></session-config>...
  • ASP网站问题,session超时,后台操作超时,重新登陆 这要看服务器的设置了,以下是我的网站的服务器配置情况,也有此问题,不过要20几分钟才会超时所以一直没管过它!2003+iis6+sql+ASP的web网站 我设置了网站的连接超时...
  • 使用XE3 做了一个WEB,使用的是uniGUI做的界面,发现经常要重新登录,影响系统使用体验,原来是server端设置的session超时时间太短。 默认的SESSION超时时间是10分钟。 –原因: 网络 SOCKET 程序,像 数据库,...
  • 对于web应用系统,通常会有以下场景:session超时之后,用户在浏览器中发出请求时将作出session超时的判断,然后系统跳转到登陆页面,提示用户重新登录。  问题在于,对于普通的http请求,可以通过拦截器判断...
  • 最近支付后台登录一段时间后如果没有任何操作,总是需要重新登录才可以继续访问页面,出现这个问题的原因就是session超时,debug代码后发现session的超时时间是1800s。也就是说当1800秒内没有任何操作,session就会...
  • 本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. ...fps=1 1、现象描述: ... kilo版本的openstack在正常登陆后长时间不做任何操作,dashboard会超时重新登录会报如...
  • 一般session超时后,会重新跳转到登录界面。在一些有iframe的页面中又或者打开了一个子窗口,这时候登录界面会显示在iframe中或是子窗口中,出现窗口套窗口。这就很不舒服了,我们需要将登录界面显示在主窗口中。...
  • session超时的处理(用于常用的用户登录部分) 源由: 我们经常会碰到这样的情况,当我们有事情离开了一会,等再回来继续我们在网页中的操作时,会出现session超时的错误,然后跟上一堆的错误,让...
  • jquery ajax方法调用在session超时以后如何跳转到登录页面? session超时以后虽然被过滤器过滤到了,但是并不会跳转到登录页面请求具体的解决方法。 我参考了这篇文章,但是我调用ajaxStart不起作用。 ...
  • If the session exists then the file loads, if the session is expired then instead of the file, it shows the user the login form and asks them to log back in. (all this works so far) <li>When the user...
  • tp5 session 验证登录超时

    千次阅读 2018-07-30 10:38:21
    哎……   先在所继承的父类中加以下代码: if ((session('last_time') - ...error('当前用户未登录或登录超时,请重新登录!', 'admin/login/login'); }   然后登录成功后的代码处加入以下代码 sessio...
  • 在一个系统中有两个应用A与B...有些情况下用户在A应用上会一直停留,比如一小时,那一小时后,B的Session已经失效,同理在B应用上停留时间过长,再去访问A也会引用A的Session失效重新登录的问题。 在不使用单点登...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 204
精华内容 81
关键字:

session超时重新登录