Как настроить глобальные данные в файле startup.cs при входе в систему. net core 3.1 веб-приложение? - PullRequest
0 голосов
/ 24 марта 2020

My. net core 3.1 веб-приложение запускается с того, что пользователю необходимо войти в систему, а также выбрать Company / Branch (CompanyCode). Теперь, как и где я могу сохранить данные этого приложения «CompanyCode» для использования в оставшейся части сеанса. Я нашел способ установить другие stati c Глобальные переменные (константы) в файле 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 является Dynami c Глобальные данные, которые будут установлены после входа в систему; как я могу этого достичь? Пожалуйста, помогите. Спасибо

Ответы [ 3 ]

0 голосов
/ 24 марта 2020

Лучший и самый простой способ сделать это -

  1. При успешном входе в систему верните companyCode вызывающему абоненту

  2. Caller (может быть javascript приложение, будет хранить код компании в глобальном масштабе, например, localstorage.)

  3. Пусть вызывающий абонент включает код компании в заголовки запроса.

  4. Таким образом, вы можете просто прочитать заголовки и получить код компании.

Несколько способов сделать это проще -

  • использовать JWT для аутентификации, так что вы можете просто включить companyCode в свой токен, и никто не может вмешаться в это.

  • Сохраните код компании в httpOnly cook ie при входе в систему. Затем файлы cookie автоматически включаются в каждый запрос к вашему веб-приложению. Конечно, чтобы это решение работало, вам нужно попросить своих пользователей включить куки (что нормально, многие сайты делают).

0 голосов
/ 25 марта 2020

Теперь, как и где я могу сохранить данные этого приложения '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();
    }
}

См. Глобальные переменные в ASP. Net Core 2

0 голосов
/ 24 марта 2020

Одним из быстрых способов является централизация всех ваших констант (при условии, что эти значения фиксируются во время разработки, а не в настройках конфигурации), в состоянии c класса

...