c# - 登录.net core 3.1 Web应用程序后如何在startup.cs中设置全局数据?
问题描述
我的 .net core 3.1 Web 应用程序从用户必须登录开始,同时选择公司/分支机构(公司代码)。现在,我如何以及在何处保存此应用程序数据“CompanyCode”,以便在会话的其余部分使用。我想出了一种在 startup.cs 文件中设置其他静态全局变量(常量)的方法。
public void ConfigureServices(IServiceCollection services)
{
Action<GlobalData> gData = (g =>
{
g.CompanyCode = 2;
g.DummyCust = 3;
g.Type_Personal = 0;
g.Type_Asset = 1;
g.Type_Bank = 2;
g.Type_Customer = 1;
g.Type_Staff = 2;
});
services.Configure(gData);
services.AddSingleton(resolver => resolver.GetRequiredService<IOptions<GlobalData>>().Value);
services.AddControllersWithViews();
services.AddDbContext<ImgContext>(options => options.UseSqlServer(Configuration.GetConnectionString("ImgContext")));
}
GlobalData 类定义:
namespace Imagetech.Data
{
public class GlobalData
{
public int CompanyCode { get; set; }
public int Type_Personal { get; set; }
public int Type_Asset { get; set; }
public int Type_Bank { get; set; }
public int Type_Customer { get; set; }
public int Type_Staff { get; set; }
public int DummyCust { get; set; }
}
}
现在 CompanyCode 是登录后要设置的动态全局数据;我怎样才能实现它?请帮忙。谢谢
解决方案
现在,我如何以及在何处保存此应用程序数据“CompanyCode”,以便在会话的其余部分使用。
您还可以在登录控制器/剃须刀页面中使用 DI 来获取和设置CompanyCode
,例如
public class AccountController : Controller
{
private readonly IOptions<GlobalData> _globalData;
public AccountController(IOptions<GlobalData> globalData)
{
_globalData = globalData;
}
[HttpPost]
public IActionResult Login()
{
var originalData = _globalData.Value.CompanyCode;
//after login successfully
//replace below 100 with your selected `CompanyCode`,
_globalData.Value.CompanyCode = 100
return View();
}
}
推荐阅读
- python-3.x - 如何遍历数据集中断,然后从中断的那一点重新开始循环?
- wordpress - 公共函数 __construct( API_Interface $api )
- python - 不正确嵌套的括号正则表达式
- reactjs - 为什么 getStaticProps 数据为空白?
- bash - osascript 调用的对话框文本中不需要的引号
- flutter - 将点击事件传递给 Stack 后面的孩子
- apache-spark - 接收器是否将其流媒体内容存储在执行器运行的地方?
- python - 如何在 Django admin 中更改用户更改页面的导航栏内容?
- javascript - 调用 Stripe 时出现 Firebase 函数错误
- highcharts - csvURL:我的一些系列名称说“未定义”