开发者社区> 问答> 正文

如何解决Cookie登录 频繁查询数据库问题?

实现所谓的无状态,使用Cookie认证的话,不用session岂不是每次都要重新认证查一下数据库?
我的具体实现是
定义 一个秘钥 key="随机";
user_profile表 里面放一个字段 token 用户注册的时候,分配一个随机值
用户登录的时候,
`String userToken= md5(用户id+token+key);
response.addCookie("user_id",用户id);
response.addCookie("user_token",userToken);`

然后定义一个登录拦截器
`String userId = request.getCookie("user_id");
String userToken= request.getCookie("user_token");
String token=db.getUserTokenById(userId); //这里每次都要查询一下数据库
String userToken2= md5(用户id+token+key);
if(userToken.equals(userToken2){
//登录成功
} else{
}
`
这次方式虽然简单,但是还是能够有效防止伪造cookie的
但是这里每次都要查询一下数据库,有没有更好的实现方式

展开
收起
蛮大人123 2016-03-13 11:26:37 3105 0
2 条回答
写回答
取消 提交回答
  • 可以使用分布式的缓存中间件,比如redis来保存用户的登录信息,这样可以减少频繁查询数据库
    2019-07-17 19:02:17
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    既然对于整个事务来说,查询是必须的,那么就应该考虑提高查询效率,根据实际需求像memcache,redis这种键值对形式的数据存储方式就显得很必要了,既能满足数据存储要求,又能缓解性能问题。

    2019-07-17 19:02:17
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载