c# - 程序运行期间的 ASP.NET Switch 数据库
问题描述
我有 2 个 Mongo 数据库。我想在 UserRole 为“Admin1”时切换到 Database1,当 UserRole 为“Admin2”时切换到 Database2。这可能吗?
private CreatorDBClient()
{
_client = new MongoClient();
//Here i would like to have something like
//IF User.IsInRole("Admin1") then _databaseName = "NextProduction1";
//ELSE _databaseName = "NextProduction2"
_defaultCompanyCollection = "Companies";
_database = _client.GetDatabase(_databaseName);
_companyCollection = _database.GetCollection<CompanyModel>(_defaultCompanyCollection);
}
public static CreatorDBClient GetInstance()
{
if (_instance == null)
{
_instance = new CreatorDBClient();
}
return _instance;
}
解决方案
创建跟随类。
public class HttpContextValues
{
private IHttpContextAccessor _httpContextAccessor;
public HttpContext HttpContext { get; set; }
public HttpContextValues()
{
_httpContextAccessor = new HttpContextAccessor();
HttpContext = _httpContextAccessor.HttpContext;
}
public class HttpContextValues
{
private IHttpContextAccessor _httpContextAccessor;
public HttpContext HttpContext { get; set; }
public HttpContextValues()
{
_httpContextAccessor = new HttpContextAccessor();
HttpContext = _httpContextAccessor.HttpContext;
}
public IEnumerable<dynamic> UserRoles()
{
if (HttpContext.User.Claims.Count() > 0)
{
var result = HttpContext.User.Claims.Where(c => c.Type ==
ClaimTypes.Role).ToList();
return result;
}
else
{
return null;
}
}
}
}
用法
HttpContextValues _httpContextValues = new HttpContextValues();
__httpContextValues.UserRoles();