一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - spring boot實戰教程之shiro session過期時間詳解

spring boot實戰教程之shiro session過期時間詳解

2021-01-14 16:07思與學 Java教程

這篇文章主要給大家介紹了關于spring boot實戰教程之shiro session過期時間的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。

前言

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

ShiroSessionFilter

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**
 * 通過攔截器設置shiroSession過期時間
 * @author yangwk
 */
public class ShiroSessionFilter implements Filter {
 private static Logger logger = LoggerFactory.getLogger(ShiroSessionFilter.class);
 
 public List<String> excludes = new ArrayList<String>();
 
 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。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@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<String, String> initParameters = Maps.newHashMap();
 initParameters.put("serverSessionTimeout", serverSessionTimeout);
 initParameters.put("excludes", "/favicon.ico,/img/*,/js/*,/css/*");
 filterRegistrationBean.setInitParameters(initParameters);
 return filterRegistrationBean;
}

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

總結

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

原文鏈接:http://www.jianshu.com/p/21d800215c17

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 青青成人福利国产在线视频 | 8天堂资源在线官网 | 免费看男人使劲躁女人小说 | 亚洲国产成人久久综合区 | 国语对白做受xxxx | 国内精品久久久久久久久久久久 | 91庥豆果冻天美精东蜜桃传媒 | 男人午夜剧场 | 日本xxxxxx片免费播放18 | 日韩国产欧美成人一区二区影院 | 精品国产福利在线观看一区 | 久草在线福利视频在线播放 | 范冰冰上面好大下面好紧 | 女毛片| 国产欧美一区二区三区精品 | 免费观看在线永久免费xx视频 | 亚洲精品综合 | 婷婷婷色 | 韩国最新三级网站在线播放 | 女仆色网址 | 激情六月丁香婷婷四房播 | 大象传媒免费网址 | 国产一级特黄aa大片在线 | 狠狠色成人综合网图片区 | 成人午夜视频一区二区国语 | 999精品视频这里只有精品 | 国产精品久久国产精品99盘 | 2019中文字幕在线视频 | 特黄a级三级三级野战 | 免费在线视频一区 | 美琪美腿白丝交小说 | 欧美xxx000喷水 | 免费网站直接进入 | 果冻传媒在线播放观看228集 | 搞逼综合网 | 麻豆视频免费在线观看 | 亚洲国产综合久久久无码色伦 | 国内精品在线播放 | 狠狠综合久久综合网站 | 白丝超短裙被输出娇喘不停小说 | 十六一下岁女子毛片免费 |