老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

springboot實戰教程之shirosession過期時間詳解

前言

創新互聯是專業的文縣網站建設公司,文縣接單;提供成都網站建設、做網站,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行文縣網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!

眾所周知在spring boot內,設置session過期時間只需在application.properties內添加server.session.timeout配置即可。在整合shiro時發現,server.session.timeout設置為7200,但未到2小時就需要重新登錄,后來發現是shiro的session已經過期了,shiro的session過期時間并不和server.session.timeout一致,目前是采用filter的方式來進行設置。

ShiroSessionFilter

/** 
 * 通過攔截器設置shiroSession過期時間
 * @author yangwk 
 */ 
public class ShiroSessionFilter implements Filter { 
 private static Logger logger = LoggerFactory.getLogger(ShiroSessionFilter.class);
 
 public List excludes = new ArrayList();
 
 private long serverSessionTimeout = 180000L;//ms
 
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException,ServletException { 
  if(logger.isDebugEnabled()){
   logger.debug("shiro session filter is open");
  }
  
  HttpServletRequest req = (HttpServletRequest) request;
  HttpServletResponse resp = (HttpServletResponse) response;
  if(handleExcludeURL(req, resp)){
   filterChain.doFilter(request, response);
   return;
  }
  
  Subject currentUser = SecurityUtils.getSubject();
  if(currentUser.isAuthenticated()){
   currentUser.getSession().setTimeout(serverSessionTimeout);
  }
  filterChain.doFilter(request, response);
 }
 
 private boolean handleExcludeURL(HttpServletRequest request, HttpServletResponse response) {

  if (excludes == null || excludes.isEmpty()) {
   return false;
  }

  String url = request.getServletPath();
  for (String pattern : excludes) {
   Pattern p = Pattern.compile("^" + pattern);
   Matcher m = p.matcher(url);
   if (m.find()) {
    return true;
   }
  }

  return false;
 }

 @Override
 public void init(FilterConfig filterConfig) throws ServletException {
  if(logger.isDebugEnabled()){
   logger.debug("shiro session filter init~~~~~~~~~~~~");
  }
  String temp = filterConfig.getInitParameter("excludes");
  if (temp != null) {
   String[] url = temp.split(",");
   for (int i = 0; url != null && i < url.length; i++) {
    excludes.add(url[i]);
   }
  }
  String timeout = filterConfig.getInitParameter("serverSessionTimeout");
  if(StringUtils.isNotBlank(timeout)){
   this.serverSessionTimeout = NumberUtils.toLong(timeout,1800L)*1000L;
  }
 }

 @Override
 public void destroy() {} 
 
}

注冊filter

在被@Configuration注解標注的類內注冊ShiroSessionFilter。

@Value("${server.session.timeout}")
private String serverSessionTimeout;

@Bean
public FilterRegistrationBean shiroSessionFilterRegistrationBean() {
 FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
 filterRegistrationBean.setFilter(new ShiroSessionFilter());
 filterRegistrationBean.setOrder(FilterRegistrationBean.LOWEST_PRECEDENCE);
 filterRegistrationBean.setEnabled(true);
 filterRegistrationBean.addUrlPatterns("/*");
 Map initParameters = Maps.newHashMap();
 initParameters.put("serverSessionTimeout", serverSessionTimeout);
 initParameters.put("excludes", "/favicon.ico,/img/*,/js/*,/css/*");
 filterRegistrationBean.setInitParameters(initParameters);
 return filterRegistrationBean;
}

這樣當每次請求時,如果用戶已登錄,就重新設置shiro session有效期,從而和server session保持了一致。

總結

以上就是這篇文章的全部內容,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對創新互聯的支持。


本文名稱:springboot實戰教程之shirosession過期時間詳解
文章URL:http://www.xueling.net.cn/article/gddiee.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 欧美成人午夜免费影院 | 国产一级片免费在线观看 | 午夜成熟看A级毛片 | 久久丫精品国产免费 | 亚洲中文字慕日产2021 | 一级毛片视频播放 | 久久精品无码一区二区WWW | 国产强被迫伦姧在线观看无码 | 欧美破苞系列二十三 | 国产情侣一区二区三区 | 日韩精品一区二区三区免费观看视频 | 亚洲成av人片在线观看无码 | 8ⅹ8x擦拨擦拨成人免费视频 | 欧美亚洲国产成人一区二区三区 | 亚洲视频免费播放 | 欧美一级日韩一级 | 日本高清有码视频 | 九热在线视频 | 国产精品96久久久久久 | 日韩在线影院 | 一级女毛片 | 青娱乐久草 | 人人妻人人插视频 | 国产大屁股喷水视频在线观看 | 非洲黑人性xxxx精品 | 中文字幕1区2区3区 日本道最新高清不卡二区 欧美疯狂做受XXXXX高潮 | 国产特黄一级免费AA大片 | 五十六十日本老熟妇乱 | 日韩欧美亚洲 | 超碰在线三级 | 亚洲乱码中文字幕综合区 | 久久99精品国产99久久6男男 | 中文无码精品a∨在线 | 特片网av| 饥渴少妇VIDEOS | 日本理论永久 | 色狠狠久久AV五月丁香 | 九月琪琪婷婷 | A级毛片无码久久精品免费 激情欧美成人久久综合 | 亚洲欧美色视频 | 白丝老师在我胯下娇喘视频 |