当前位置: 首页 > 知识库问答 >
问题:

spring中使用缓存和拦截器实现登录/注销

穆博简
2023-03-14

我想在我的web应用程序中实现登录/注销,我使用SpringMVC,对于登录/注销,我使用Ehcache和HandlerInterceptorAdapter。基本思想是:

>

从下一个请求中,在HandlerInterceptorAdapter的preHandle()方法中从请求对象获取密钥,并签入缓存(如果存在),或者
重定向到登录页面。

用于存储在缓存中的代码为:

 if(validateUserFromDB()){
  /* if a valid user */

     userDtlForm = iHomePageService.getUserDetails(emailIdOfUser);
     String token = generateSomeUniqueTokenForTheUser();

    /* put the user in cache :  [ key --> token || value--> userDtlForm ] */
    storeTheTokenInCache();
    request.setAttribute("token ", token );
}

现在,对于每一个其他请求,我都会根据拦截器中的令牌检查缓存。

  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
     String token = request.getAttribute("token");
     /* isValid == true when user exists inthe cache */
     boolean isValid =  checkCacheForTheToken(token);
     if (!isValid) {
           //redirect to login page
           return false;
    }
    return true;
}

但问题是我通过请求得到了空值。我的拦截器中的getAttribute(“令牌”)。我做错了什么

共有1个答案

裴英才
2023-03-14

>

  • 当用户登录-

    从下一个请求中,在HandlerInterceptorAdapter的preHandle()方法中从请求对象获取密钥,并签入缓存(如果存在),或者重定向到登录页面。

    在postHandle()中,再次将令牌设置回客户端。

    在公共jsp中维护令牌,因此可以将其附加到所有请求中。

    如何实施,请建议/

  •  类似资料:
    • 本文向大家介绍Spring MVC 拦截器实现登录,包括了Spring MVC 拦截器实现登录的使用技巧和注意事项,需要的朋友参考一下 上篇博文我在博客中讲到如何使用spring MVC框架来实现文件的上传和下载,今天小钱给大家再来分享和介绍Spring MVC框架中相当重要的一块功能——拦截器。 关于拦截器的概念我在这里就不多说了,大家可以上网百度或者看别人写的具体博客,我今天要说的是拦截器在实

    • 本文向大家介绍SpringBoot拦截器实现登录拦截的方法示例,包括了SpringBoot拦截器实现登录拦截的方法示例的使用技巧和注意事项,需要的朋友参考一下 源码 GitHub:https://github.com/291685399/springboot-learning/tree/master/springboot-interceptor01 SpringBoot拦截器可以做什么 可以对UR

    • 本节,我们将通过 Spring MVC 拦截器(Interceptor)来实现一个用户登录权限验证的案例。 在本案例中,只有登录后的用户才能访问系统主页,若没有登录就直接访问主页,则拦截器会将请求拦截并跳转到登录页面,同时在登录页面中给出提示信息。若用户登陆时,用户名或密码错误,则登录页也会显示相应的提示信息。已登录的用户在系统主页点击“退出登录”时,跳转会登录页面,流程图如下。 图1:用户登录流

    • 本文向大家介绍Vue 前端实现登陆拦截及axios 拦截器的使用,包括了Vue 前端实现登陆拦截及axios 拦截器的使用的使用技巧和注意事项,需要的朋友参考一下 该项目是利用了Github 提供的personal token作为登录token,通过token访问你的Repository List。通过这个项目学习如何实现一个前端项目中所需要的 登录及拦截、登出、token失效的拦截及对应 axi

    • 本文向大家介绍Struts拦截器实现拦截未登陆用户实例解析,包括了Struts拦截器实现拦截未登陆用户实例解析的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是Struts拦截器实现拦截未登陆用户,具体实现如下。 首先建立一个工具类: checkPrivilegeInterceptor:这个类继承interceptor,这是一个接口,要实现三个方法,要是觉得比较多的话,可以继承他的实现类A

    • 本文向大家介绍利用spring的拦截器自定义缓存的实现实例代码,包括了利用spring的拦截器自定义缓存的实现实例代码的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是利用spring的拦截器自定义缓存的实现,具体实现代码如下所示。 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态