c# - 如何让 AdGroupAuthProvider 与 OrmLiteCacheClient 一起工作?
问题描述
我希望最终用户可以访问该应用程序,无论 LoadBalancer 重定向哪个服务器节点。所以,我想使用 OrmLiteCacheClient 在 MSSQL DB 中存储会话。
我有以下代码(只有部分 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 表是空的。
解决方案
ServiceStack 用于ICacheClient
将用户会话存储在普通的基于会话的 Auth Providers中,尽管它不会将 Sessions 保存到IAuthWithRequest Providers中的缓存中。
我不熟悉,AdGroupAuthProvider
但如果它实现IAuthWithRequest
请求包含每个请求的身份验证,这是用于填充会话的内容,该会话仅附加到请求而不是持久化在ICacheClient
.
推荐阅读
- node.js - 在 node.js 中调用 childprocess.spawn 后如何获取计算的命令行代码?
- python - RuntimeWarning:在 double_scalars h[i]=(delta_tau*((sigma*x[i])**2))/(s*h[i-1]-delta_tau*r*h[i-1] 中遇到无效值)
- python - 如何组合和旋转具有不同结构的数据框
- java - 关于我程序中的逻辑的问题
- node.js - Docker compose - Check if mongodb port is available and only then start NodeJS container
- sql-server - Azure SQL 服务器迁移帮助 - Oracle 到 Azure SQL?
- javascript - Discord.JS:在循环中等待多个回复
- javascript - 如何制作一个呈现 Ant Design TabPanes 数组的 React.FC?
- linux - 是否可以使用 bluez api 即时更新广告数据?
- javascript - 向一个 JS 选择器添加类时,为什么所有元素都获取该类?