我想在我的Web应用程序中实现登录/注销,我使用的是Spring MVC,而对于登录/注销,我使用的是Ehcache和HandlerInterceptorAdapter。基本思路是:
- >使用DB进行身份验证以及所有凭据 是正确的然后用密钥和存储将用户对象存储在缓存中 请求对象中的密钥。
从下一个请求中获取preHandle()中请求对象的密钥
HandlerInterceptorAdapter的方法和检查缓存(如果存在)或
重定向到登录页面。
用于存储在缓存中的代码是:
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;
}
但问题是我通过拦截器中的request.getAttribute(“token”)获取空值。我做错了什么
答案 0 :(得分:0)
- >使用DB进行身份验证以及所有凭据 是正确的然后用密钥和存储将用户对象存储在缓存中 请求对象中的密钥。
从下一个请求中获取HandlerInterceptorAdapter的preHandle()方法中的请求对象的密钥,并检查缓存(如果存在),或重定向到登录页面。
在postHandle()中再次将令牌设置回客户端。
将令牌保存在公共jsp中,因此可以附加所有请求。
实施它的方法是什么,请建议.... /