如何确保一次只创建一个OAuth 2.0令牌?
如何确保一次只创建一个OAuth 2.0令牌?
鉴于存在多个进程,OAuth终端是它们全部汇合的地方。这似乎是一个解决问题的合理位置。
首先,我会创建一个OAuth代理(正如你所说),这样所有的进程都可以使用它来获取访问/刷新令牌。该代理将用于获取原始的访问/刷新令牌以及处理刷新。
至于确保访问令牌只有一个的逻辑,我会使用以下方法:
1. 首先,代理没有访问令牌,所以当多个进程来获取令牌时,代理将暂停所有这些线程,并从原始的OAuth服务器请求一个访问/刷新令牌。
2. 由于你控制代理,可以同步线程以确保它们都等待访问令牌可用。
3. 此时,每个进程都将拥有相同的访问令牌。
4. 我会让代理在访问令牌过期时进行刷新,并缓存并返回新的令牌(但不是在过期之前)。
5. 代理在旧令牌到期之前不会请求新的令牌,这可以确保同时只有一个访问令牌可用。
谢谢您的回复。我认为这是我最好的选择。您知道如何在C#中实现线程同步吗?只需要使用“lock”吗?就像您所说的,如果同时有10个请求到达,而没有可用的令牌(我猜我需要将其存储在某个地方,比如数据库),那么我只想让其中一个请求获取令牌,而其他9个请求也可以使用相同的令牌。
我不懂C#编程(我是一个Java人),但快速搜索告诉我可以使用锁;类似于stackoverflow.com/questions/15027522/...