【问题标题】:What's the pattern for sharing a RestAPI token?共享 RestAPI 令牌的模式是什么?
【发布时间】:2020-09-14 10:48:51
【问题描述】:

我应该如何在多个类中存储和重用 restAPI 授权令牌?

我正在使用一个 RestAPI,我的登录代码需要一个用户、密码和服务器,然后返回一个身份验证令牌。该登录代码位于我的所有 RestAPI 调用的通用基类中,它工作正常。但是每个新对象都不知道令牌,因此必须重新授权。我需要它们在生成后共享相同的令牌。我不能使用单例,因为我可能必须在同一个会话中使用多个不同的用户登录。

我确定有一个模式,但我找不到,你能帮忙吗?

【问题讨论】:

    标签: c# rest design-patterns


    【解决方案1】:

    您需要的是缓存。登录服务可以是缓存访问令牌的单例,您可以使用并发字典来实现访问令牌缓存。

    类似这样的:

    public class LoginService
    {
    
        private ConcurrentDictionary<string, string> accessTokenCache = new ConcurrentDictionary<string, string>();
    
        private string callServerLogin(string user, string password)
        {
            throw new NotImplementedException();
        }
    
        public string Login(string user, string password)
        {
            var accessToken = callServerLogin(user, password);
            accessTokenCache[user] = accessToken;
            return accessToken;
        }
    
        public bool TryGetCachedAccessToken(string user, out string accessToken )
        {
            return this.accessTokenCache.TryGetValue(user, out accessToken);
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-19
      • 2018-09-23
      • 1970-01-01
      • 2011-06-05
      • 2013-07-26
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多