use*_*mda 23 java authentication rest httpclient
我正在使用HttpCLient在Java中编写REST客户端,我访问的REST API需要每个REST操作的身份验证令牌.此令牌有效期为24小时.
我现在处理这个问题的getAuth()方法是每当我需要进行REST调用时调用一个" "方法,这似乎是auth服务器上的开销.
如何方便地存储此身份验证令牌并管理其生命周期?是否有任何记录的最佳实践?
我想到了以下解决方案
public class MySession {
String user;
String pass;
public MySession(String user, String pass) {
this.user = user;
this.pass = pass;
}
public getAuth() {
//user user, pass to get auth token
}
}
Run Code Online (Sandbox Code Playgroud)
然后将sessions对象传递给任何需要该令牌的类.如果令牌已过期,请再次调用此方法
为简洁起见,我假设您正在调用一个无法更改的端点.您应该如何实现将在很大程度上取决于令牌是基于应用还是基于用户(共享应用实例上的所有用户一个令牌或每个用户一个令牌).
如果它是整个应用程序的一个身份验证令牌:
如果每个用户只有一个令牌:
如果您担心数据库的点击次数过多,那么我假设有很多网络活动。
\n\n我不建议在您的情况下使用 Session,而是将令牌存储在客户端的 cookie 中。
\n\n在高流量环境中(我假设您的环境是这样),会话的使用可能会消耗大量服务器内存,并且可扩展性也可能是一个问题,必须在集群内保持会话同步。
\n\n正如 @C\xc3\xa1ssio Mazzochi Molin 也提到的,您可以使用内存缓存来存储任何用户特定的数据和令牌。这将减少对数据库的访问,并且还允许您在需要时更轻松地扩展应用程序。
\n