如何进行基于会话的过滤servlet身份验证

时间:2017-06-07 05:23:18

标签: java session servlets servlet-filters

我目前正在使用过滤器来验证REST中给出的凭据以及在servlet中完成的servlet调用。

每当请求使它从数据库中获取凭证时,每次都是昂贵的操作。

有没有办法根据会话进行身份验证,因此无需每次都从db中检索详细信息。

感谢。

3 个答案:

答案 0 :(得分:0)

最好的事情是基于令牌的机制。一旦用户登录,他就会获得一个令牌,并且从客户端使用该令牌重新发送API调用将使客户端能够访问API。

请参阅:Implementing authentication with tokens

答案 1 :(得分:0)

是您可以在用户第一次成功登录时创建令牌,并将该令牌保存在缓存服务器中,并在客户端检查来自缓存服务器而不是数据库时设置cookie。按会话到期时间设置令牌到期时间

答案 2 :(得分:0)

我看到你有两个选择

  1. 将会话令牌保留在内存中。每个应用服务器都有一种方法来复制内存中的会话缓存。实际上,它需要一些缓存管理。
  2. 我见过和做过的大部分解决方案都使用了这个选项。

    1. 您可以使用自包含令牌(例如JWT),过滤器应该能够在不访问DB的情况下进行验证。然后,您将需要一个令牌服务来交换令牌的客户端凭据。
    2. 如果您的客户直接使用他们的凭据(基本身份验证),您可以考虑使用某种方式来使用更安全的缓存(OAuth 2.0)

      当某人有改进或不同意时,请随时发表评论