Каков шаблон для совместного использования токена RestAPI? - PullRequest
0 голосов
/ 27 мая 2020

Есть ли шаблон для того, как мне хранить и повторно использовать токен авторизации restAPI в нескольких классах?

Я использую RestAPI, мой код входа принимает пользователя, пароль и сервер, а затем возвращает аутентификацию токен. Этот код входа находится в общем базовом классе для всех моих вызовов RestAPI, который отлично работает. Но каждый новый объект не знает токена, поэтому его необходимо повторно авторизовать. Мне нужно, чтобы они использовали один и тот же токен после его создания. Я не могу использовать синглтон, так как мне, возможно, придется войти в систему с несколькими разными пользователями в одном сеансе.

Я уверен, что для этого есть шаблон, но я не могу его найти, вы можете помочь?

1 Ответ

0 голосов
/ 27 мая 2020

Что вам нужно, так это кеш. Служба входа в систему может быть синглтоном, который кэширует токены доступа, вы можете использовать параллельный словарь для реализации кеша токенов доступа.

Примерно так:

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);
    }

}
...