public static async Task Init() { IAdminSecurityApplication ipAddressApplication = MyIoc.Create <IAdminSecurityApplication>(); var useIpType = await ipAddressApplication.GetUseIpType(); var ipFirewall = IpFirewallHelper.GetIpFirewall(); var list = await ipAddressApplication.GetIpBanAll(); ipFirewall.SetIpBanList(list.Select(q => q.Ip).ToList()); var list2 = await ipAddressApplication.GetIpAllowAll(); ipFirewall.SetIpAllowList(list2.Select(q => q.Ip).ToList()); if (useIpType == 1) { ipFirewall.UseIpBanList(); } else if (useIpType == 2) { ipFirewall.UseIpAllowList(); } else { ipFirewall.CloseFirewall(); } }
static CacheHelper() { IAdminApplication adminApplication = MyIoc.Create <IAdminApplication>(); var task = adminApplication.GetAdminCookieList().RunSync(); //adminApplication.GetAdminSessionId().RunSynchronously() foreach (var item in task) { AdminSessionIdCaches[item.Id] = item.LastSessionID; AdminBrowserPasswordCaches[item.Id] = item.LastBrowserPassword; } var settingValue = adminApplication.GetSettingValueByCode("UseWatermark").RunSync(); if (settingValue != null) { UseWatermark = settingValue.Value == "1"; } var settingValue2 = adminApplication.GetSettingValueByCode("WatermarkText").RunSync(); if (settingValue2 != null) { WatermarkText = settingValue2.Value; } else { WatermarkText = "{trueName} {yyyy}-{MM}-{dd}"; } }
public MyIocControllerFactory(MyIoc container) { if (container == null) { throw new ArgumentNullException("Container must be non null."); } this.container = container; }
public static void Start() { IContainer container = IoC.Initialize(); MyIoc.Init(container); StructureMapDependencyScope = new StructureMapDependencyScope(container); DependencyResolver.SetResolver(StructureMapDependencyScope); DynamicModuleUtility.RegisterModule(typeof(StructureMapScopeModule)); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); MyIoc.SetServiceCollection(services); MyHttpContext.SetServiceCollection(services); services.RegisterAssemblyInterfaces("ToolGood.SqlOnline.Application", null, LifeStyle.PerLifetimeScope); services.AddAntiforgery(options => { options.HeaderName = "__RequestVerificationToken"; options.FormFieldName = "__RequestVerificationToken"; }); services.AddResponseCompression(options => { options.Providers.Add <BrotliCompressionProvider>(); options.Providers.Add <GzipCompressionProvider>(); options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[] { "image/svg+xml", "application/x-font-truetype" }); }); services.AddDistributedMemoryCache(); services.AddSession(options => { options.Cookie.Name = "sid"; options.IdleTimeout = TimeSpan.FromHours(3); options.IOTimeout = TimeSpan.FromSeconds(1); options.Cookie.IsEssential = true; options.Cookie.HttpOnly = true; options.Cookie.Path = "/"; //options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None; //猎豹浏览器 ajax 请求无效 //options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.SameAsRequest; }); services.Configure <CookiePolicyOptions>(options => { options.CheckConsentNeeded = context => false; //options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.None; //猎豹浏览器 ajax 请求无效 //options.Secure = Microsoft.AspNetCore.Http.CookieSecurePolicy.SameAsRequest; }); services.AddHttpContextAccessor(); services.AddHttpClient(); services.AddControllersWithViews(options => { options.Filters.Add <HttpGlobalExceptionFilter>(); }).AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) .AddDataAnnotationsLocalization() .AddNewtonsoftJson(options => { options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; options.SerializerSettings.TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple; options.SerializerSettings.Converters.Add(new JsonCustomDoubleConvert()); // json序列化时, 防止double,末尾出现小数点浮动, options.SerializerSettings.Converters.Add(new JsonCustomDoubleNullConvert()); // json序列化时, 防止double,末尾出现小数点浮动, }); services.AddRazorPages(); services.AddControllers(); services.AddSingleton(HtmlEncoder.Create(UnicodeRanges.All)); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); // Add MyIoc container to its custom controller factory and add to services. MyIoc container = new MyIoc(); container.Register <ILocator, LDAPLocator>(); container.Register <IRealm, LDAPRealm>(); MyIocControllerFactory ctrlFact = new MyIocControllerFactory(container); ctrlFact.RegisterController <HomeController>("HomeController"); services.AddSingleton <IControllerFactory>(ctrlFact); }
public static MyIoc GetDataFlow <TStep1, TStep2, TStep3>(TimeSpan reQueueTimeOut) { var result = new MyIoc(); var queue = new DataFlowQueueInMemory(); var dataFlowSettings = new DataFlowTestSettings { RequeueTimeOut = reQueueTimeOut }; var dataFlow = new MyDataFlow <TStep1, TStep2, TStep3>(queue, dataFlowSettings); dataFlow.RegisterJsonSerializer(); result.Register(dataFlow); result.Register <MyDataFlowBase>(dataFlow); return(result); }
public static void UpdateWatermarkText() { IAdminApplication adminApplication = MyIoc.Create <IAdminApplication>(); var settingValue = adminApplication.GetSettingValueByCode("UseWatermark").RunSync(); if (settingValue != null) { UseWatermark = settingValue.Value == "1"; } var settingValue2 = adminApplication.GetSettingValueByCode("WatermarkText").RunSync(); if (settingValue2 != null) { WatermarkText = settingValue2.Value; } else { WatermarkText = "{trueName} {yyyy}-{MM}-{dd}"; } }
public MyIocTest() { myIoc = new MyIoc(); }
public static void PushReadQueueTimer(this MyIoc ioc, DateTime utcNow) { var dataFlowTimer = ioc.GetService <MyDataFlowBase>(); dataFlowTimer.ReadQueueIterationAsync(utcNow).AsTask().Wait(); }
public override void OnActionExecuting(ActionExecutingContext context) { var adminApplication = MyIoc.Create <IAdminApplication>(); #region 检测登录,cookie登录 AdminSessionDto adminSessionDto = context.GetSession <AdminSessionDto>(SessionSetting.AdminSession); //if (adminSessionDto == null) { // var userDto = GetAdminCookieDto(context); // if (userDto != null && userDto.ExpireTime > DateTime.Now) { // if (CacheHelper.CheckAdminSessionId(userDto.UserId, context.GetCookie(CookieSetting.AdminCookie))) { // var admin = adminApplication.GetAdminById(userDto.UserId).RunSync(); // if (null != admin && admin.IsFrozen == 0) { // bool pwd = HashUtil.GetMd5String(admin.Password) == userDto.PasswordHash; // if (pwd) { // adminSessionDto = new AdminSessionDto(admin.Id, admin.Name, admin.TrueName, admin.JobNo); // context.SetSession(SessionSetting.AdminSession, adminSessionDto); // } // } // } // } //} if (null == adminSessionDto) { if (context.HttpContext.Request.Method.ToUpper() == "GET") { var url = UrlSetting.AdminLoginUrl; context.Result = ActionResultUtil.JumpTopUrl(url, "cookie无效,请先登录!"); } else { context.Result = ActionResultUtil.Error(); } return; } #endregion #region 检测菜单权限 var menus = this.GetType().GetCustomAttributes <AdminMenuAttribute>(true); List <AdminMenuAttribute> adminMenus = new List <AdminMenuAttribute>(); if (menus.Count() > 0) { foreach (var item in menus) { var isPass = CacheHelper.AdminMenuButtonCache.GetOrAdd(adminSessionDto.Id + "-" + item.MenuCode + "-" + item.ButtonCode, () => { return(adminApplication.IsPass(adminSessionDto.Id, item.MenuCode, item.ButtonCode).RunSync()); }); if (isPass) { adminMenus.Add(item); } } if (adminMenus.Count == 0) { context.Result = new RedirectResult(UrlSetting.AdminNoAccessUrl); return; } ViewData["MenuCode"] = adminMenus[0].MenuCode; ViewData["ButtonCode"] = adminMenus[0].ButtonCode; } #endregion base.OnActionExecuting(context); if (context.Result != null) { return; } #region 检测参数是否正常 AdminDto = adminSessionDto; var rsaHelper = RsaHelper.Instance; IRequest temp = null; foreach (var item in context.ActionArguments) { if (item.Value is EncryptedQueryArgs rsaData) { rsaData.PasswordString = CacheHelper.GetBrowserPassword(AdminDto.Id); if (rsaData.CheckSign(rsaHelper.RsaModulus, rsaHelper.RsaExponent, out string msg) == false) { DeleteCookie(CookieSetting.AdminCookieLogin); context.Result = Error(msg); return; } if (rsaData.DecryptData() == false) { context.Result = Error("数据错误!"); return; } if (rsaData.CheckData(out string msg2) == false) { context.Result = Error(msg2); return; } if (rsaData is IRequest adminRequest) { adminRequest.OperatorId = AdminDto.Id; adminRequest.OperatorName = AdminDto.TrueName; temp = adminRequest; } } } #endregion #region 检测是否启用管理模式 if (adminSessionDto.IsAdminMode() == false) { foreach (var item in adminMenus) { var useCheck = CacheHelper.AdminMenuCheckCache.GetOrAdd(item.MenuCode + "-" + item.ButtonCode, () => { return(adminApplication.GetMenuCheck(item.MenuCode, item.ButtonCode).RunSync()); }); if (useCheck) { if (context.HttpContext.Request.Method.ToUpper() == "GET") { var urlP = System.Web.HttpUtility.UrlEncode(context.HttpContext.Request.Path.ToSafeString() + context.HttpContext.Request.QueryString.ToSafeString()); var url = UrlSetting.AdminModeUrl + urlP;// $"/admin/tools/AdminMode?url={urlP}"; context.Result = ActionResultUtil.JumpUrl(url); return; } else { if (temp == null) { context.Result = ActionResultUtil.Error("TryAdminMode"); return; } if (string.IsNullOrEmpty(temp.OperatorPassword)) { context.Result = ActionResultUtil.Error("TryAdminMode"); return; } if (adminApplication.CheckPassword(temp.OperatorId, temp.OperatorPassword, temp).RunSync() == false) { context.Result = ActionResultUtil.Error("密码不正确"); return; } AdminDto.SetAdminMode(DateTime.Now.AddMinutes(temp.AdminModeTime)); SetSession(SessionSetting.AdminSession, AdminDto); break; } } } } #endregion }
public ResolvableController(MyIoc container) { this.container = container; }