热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

管理身份验证令牌的最佳做法

如何解决《管理身份验证令牌的最佳做法》经验,为你挑选了1个好方法。

我正在使用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 
    }
}

然后将sessions对象传递给任何需要该令牌的类.如果令牌已过期,请再次调用此方法



1> Dave L..:

为简洁起见,我假设您正在调用一个无法更改的端点.您应该如何实现将在很大程度上取决于令牌是基于应用还是基于用户(共享应用实例上的所有用户一个令牌或每个用户一个令牌).

如果它是整个应用程序的一个身份验证令牌:

将其与生存时间戳一起存储在内存中(或者捕获令牌过期错误,请求新令牌并重试原始请求),如果它不存在则刷新/已过期

如果您担心在应用程序重新启动后重新请求API令牌,还会将其存储在数据库中并在启动时加载它(如果存在)

如果每个用户只有一个令牌:

将它存储在您的用户会话中,这正是会话所用的内容,如果您正在为用户进行授权,那么他们将会有一个会话并且已经存在开销

如果您不想在每次登录时重新请求令牌,请将当前令牌存储在数据库中,并在登录时将其加载到会话中


推荐阅读
author-avatar
老鼠爱上毛ee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有