Как заставить AdGroupAuthProvider работать с OrmLiteCacheClient? - PullRequest
1 голос
/ 20 мая 2019

Я хочу, чтобы приложение было доступно для конечного пользователя независимо от того, на какой узел сервера перенаправляется LoadBalancer.Итак, я хотел бы использовать OrmLiteCacheClient для хранения сеанса в БД MSSQL.

У меня есть следующий код (есть только часть SetupPlugins):

private void SetupPlugins (Container container)
{
    //Register OrmLite Db Factory if not already
    container.Register<IDbConnectionFactory>(c =>
        new OrmLiteConnectionFactory(connString, SqlServerDialect.Provider));

    container.RegisterAs<OrmLiteCacheClient, ICacheClient>();

    //Create 'CacheEntry' RDBMS table if it doesn't exist already
    container.Resolve<ICacheClient>().InitSchema();

    container.Register<IAuthRepository>(c =>
        new OrmLiteAuthRepository(c.Resolve<IDbConnectionFactory>()));

    container.Resolve<IAuthRepository>().InitSchema();

    Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] {
        new AdGroupAuthProvider(container.Resolve<IActiveDirectoryAuthHelper>(),
        GlobalConfiguration.Instance.AllowedActiveDirectoryGroup)
    }));       
}

internal class AdGroupAuthProvider : BasicAuthProvider
{
    private readonly IActiveDirectoryAuthHelper _adLoggingHelper;
    private readonly string _loggedUserAdGroup;

    public AdGroupAuthProvider(IActiveDirectoryAuthHelper loggingHelper,     string loggedUserAdGroup)
    {
        _adLoggingHelper = loggingHelper;
        _loggedUserAdGroup = loggedUserAdGroup;
    }
    public override bool Authenticate(IServiceBase loggingServiceBase,     string userName, string password)
    {
        return _adLoggingHelper.HasUserAssignedGroup(userName, password, _loggedUserAdGroup);
    }
 }
}

Как заставить AdGroupAuthProvider работать сOrmLiteCacheClient?Выше программа собирает и я могу аутентифицироваться.Однако таблица CacheEntry MSSQL пуста.

1 Ответ

0 голосов
/ 20 мая 2019

ServiceStack использует ICacheClient для хранения пользовательских сеансов в обычных провайдерах аутентификации на основе сеансов , хотя он не сохраняет сеансы в кэше в провайдерах IAuthWithRequest .

Я не знаком с AdGroupAuthProvider, но если он реализует IAuthWithRequest, запрос содержит аутентификацию для каждого запроса, которая используется для заполнения сеанса, который только присоединен к запросу и не сохраняется в ICacheClient.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...