public async Task <IActionResult> CreateDBConn(DbConnInfo dbConnInfo) { CommonResult result = new CommonResult(); DBConnResult dBConnResult = new DBConnResult(); if (dbConnInfo != null) { if (string.IsNullOrEmpty(dbConnInfo.DbName)) { dbConnInfo.DbName = "master"; } else if (string.IsNullOrEmpty(dbConnInfo.DbAddress)) { result.ErrMsg = "访问地址不能为空"; } else if (string.IsNullOrEmpty(dbConnInfo.DbUserName)) { result.ErrMsg = "访问用户不能为空"; } else if (string.IsNullOrEmpty(dbConnInfo.DbPassword)) { result.ErrMsg = "访问密码不能为空"; } if (string.IsNullOrEmpty(dbConnInfo.DbPort.ToString())) { if (dbConnInfo.DbType == "SqlServer") { dbConnInfo.DbPort = 1433; } else if (dbConnInfo.DbType == "MySql") { dbConnInfo.DbPort = 3306; } } if (dbConnInfo.DbType == "SqlServer") { dBConnResult.ConnStr = string.Format("Server={0},{1};Database={2};User id={3}; password={4};MultipleActiveResultSets=True;", dbConnInfo.DbAddress, dbConnInfo.DbPort, dbConnInfo.DbName, dbConnInfo.DbUserName, dbConnInfo.DbPassword); } else if (dbConnInfo.DbType == "MySql") { dBConnResult.ConnStr = string.Format("server={0};database={1};uid={2}; pwd={3};port={4};Allow User Variables=True;", dbConnInfo.DbAddress, dbConnInfo.DbName, dbConnInfo.DbUserName, dbConnInfo.DbPassword, dbConnInfo.DbPort); } YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); TimeSpan expiresSliding = DateTime.Now.AddMinutes(30) - DateTime.Now; yuebonCacheHelper.Add("CodeGeneratorDbConn", dBConnResult.ConnStr, expiresSliding, false); yuebonCacheHelper.Add("CodeGeneratorDbType", dbConnInfo.DbType, expiresSliding, false); yuebonCacheHelper.Add("CodeGeneratorDbName", dbConnInfo.DbName, expiresSliding, false); DbExtractor dbExtractor = new DbExtractor(); List <DataBaseInfo> listTable = dbExtractor.GetAllDataBases(); result.ResData = listTable; result.Success = true; result.ErrCode = ErrCode.successCode; } return(ToJsonContent(result)); }
/// <summary> /// 数据库连接,根据数据库类型自动识别,类型区分用配置名称是否包含主要关键字 /// MSSQL、MYSQL、ORACLE、SQLITE、MEMORY、NPGSQL /// </summary> /// <returns></returns> public DbConnection OpenSharedConnection() { YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); object connCode = yuebonCacheHelper.Get("CodeGeneratorDbConn"); DbConnectionOptions dbConnectionOptions = DBServerProvider.GeDbConnectionOptions(); DatabaseType dbType = DatabaseType.SqlServer; if (connCode != null) { defaultSqlConnectionString = connCode.ToString(); string dbTypeCache = yuebonCacheHelper.Get("CodeGeneratorDbType").ToString(); dbType = (DatabaseType)Enum.Parse(typeof(DatabaseType), dbTypeCache); } else { defaultSqlConnectionString = dbConnectionOptions.ConnectionString; dbType = dbConnectionOptions.DatabaseType; TimeSpan expiresSliding = DateTime.Now.AddMinutes(30) - DateTime.Now; yuebonCacheHelper.Add("CodeGeneratorDbConn", defaultSqlConnectionString, expiresSliding, false); yuebonCacheHelper.Add("CodeGeneratorDbType", dbType, expiresSliding, false); } if (dbType == DatabaseType.SqlServer) { dbConnection = new SqlConnection(defaultSqlConnectionString); } else if (dbType == DatabaseType.MySql) { dbConnection = new MySqlConnection(defaultSqlConnectionString); } else if (dbType == DatabaseType.Oracle) { dbConnection = new OracleConnection(defaultSqlConnectionString); } else if (dbType == DatabaseType.SQLite) { dbConnection = new SqliteConnection(defaultSqlConnectionString); } else if (dbType == DatabaseType.Npgsql) { dbConnection = new NpgsqlConnection(defaultSqlConnectionString); } else { throw new NotSupportedException("The database is not supported"); } if (dbConnection.State != ConnectionState.Open) { dbConnection.Open(); } return(dbConnection); }
public IActionResult YuebonConnecSys(string systype) { CommonResult result = new CommonResult(); try { if (!string.IsNullOrEmpty(systype)) { SystemType systemType = iService.GetByCode(systype); string openmf = MD5Util.GetMD5_32(DEncrypt.Encrypt(CurrentUser.UserId + systemType.Id, GuidUtils.NewGuidFormatN())).ToLower(); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); TimeSpan expiresSliding = DateTime.Now.AddSeconds(20) - DateTime.Now; yuebonCacheHelper.Add("openmf" + openmf, CurrentUser.UserId, expiresSliding, false); result.ErrCode = ErrCode.successCode; result.ResData = systemType.Url + "?openmf=" + openmf; } else { result.ErrCode = ErrCode.failCode; result.ErrMsg = "切换子系统参数错误"; } } catch (Exception ex) { Log4NetHelper.Error("切换子系统异常", ex); result.ErrMsg = ErrCode.err40110; result.ErrCode = "40110"; } return(ToJsonContent(result)); }
public void UpdateCacheAllowApp() { YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); IEnumerable <APP> appList = repository.GetAllByIsNotDeleteAndEnabledMark(); yuebonCacheHelper.Add("AllowAppId", appList); }
public CommonResult <PageResult <DbTableInfo> > FindListTable(SearchModel search) { CommonResult <PageResult <DbTableInfo> > result = new CommonResult <PageResult <DbTableInfo> >(); if (!string.IsNullOrEmpty(search.EnCode)) { YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); object connCode = yuebonCacheHelper.Get("CodeGeneratorDbConn"); if (connCode != null) { string SqlConnectionString = connCode.ToString(); string[] sqlconn = SqlConnectionString.Split(";"); string[] dataName = sqlconn[1].Split("="); dataName[1] = search.EnCode; sqlconn[1] = dataName.Join("="); string newConnStr = sqlconn.Join(";"); TimeSpan expiresSliding = DateTime.Now.AddMinutes(30) - DateTime.Now; yuebonCacheHelper.Add("CodeGeneratorDbConn", newConnStr, expiresSliding, false); yuebonCacheHelper.Add("CodeGeneratorDbName", search.EnCode, expiresSliding, false); } } string orderByDir = search.Order; string orderFlied = string.IsNullOrEmpty(search.Sort)? "TableName": search.Sort; bool order = orderByDir == "asc" ? false : true; string where = "1=1"; if (!string.IsNullOrEmpty(search.Keywords)) { where += " and TableName like '%" + search.Keywords + "%'"; } PagerInfo pagerInfo = new PagerInfo { PageSize = search.PageSize, CurrenetPageIndex = search.CurrenetPageIndex }; DbExtractor dbExtractor = new DbExtractor(); List <DbTableInfo> listTable = dbExtractor.GetTablesWithPage(search.Keywords, orderFlied, order, pagerInfo); PageResult <DbTableInfo> pageResult = new PageResult <DbTableInfo>(); pageResult.CurrentPage = pagerInfo.CurrenetPageIndex; pageResult.Items = listTable; pageResult.ItemsPerPage = pagerInfo.PageSize; pageResult.TotalItems = pagerInfo.RecordCount; result.ResData = pageResult; result.ErrCode = ErrCode.successCode; return(result); }
/// <summary> /// 初始化 /// </summary> public virtual void Initial() { YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); SysSetting sysSetting = XmlConverter.Deserialize <SysSetting>("xmlconfig/sys.config"); if (sysSetting != null) { yuebonCacheHelper.Add("SysSetting", sysSetting); } }
public async Task <IActionResult> GetSysInfo() { CommonResult result = new CommonResult(); try { SysSetting sysSetting = XmlConverter.Deserialize <SysSetting>("xmlconfig/sys.config"); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); yuebonCacheHelper.Add("SysSetting", sysSetting); DashboardOutModel dashboardOutModel = new DashboardOutModel(); dashboardOutModel.CertificatedCompany = sysSetting.CompanyName; dashboardOutModel.WebUrl = sysSetting.WebUrl; dashboardOutModel.Title = sysSetting.SoftName; dashboardOutModel.MachineName = Environment.MachineName; dashboardOutModel.ProcessorCount = Environment.ProcessorCount; dashboardOutModel.SystemPageSize = Environment.SystemPageSize; dashboardOutModel.WorkingSet = Environment.WorkingSet; dashboardOutModel.TickCount = Environment.TickCount; dashboardOutModel.RunTimeLength = (Environment.TickCount / 1000).ToBrowseTime(); dashboardOutModel.FrameworkDescription = RuntimeInformation.FrameworkDescription; dashboardOutModel.OSName = RuntimeInformation.IsOSPlatform(OSPlatform.Linux) ? "Linux" : RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? "OSX" : "Windows"; dashboardOutModel.OSDescription = RuntimeInformation.OSDescription + " " + RuntimeInformation.OSArchitecture; dashboardOutModel.OSArchitecture = RuntimeInformation.OSArchitecture.ToString(); dashboardOutModel.ProcessArchitecture = RuntimeInformation.ProcessArchitecture.ToString(); dashboardOutModel.Directory = AppContext.BaseDirectory; Version version = Environment.Version; dashboardOutModel.SystemVersion = version.Major + "." + version.Minor + "." + version.Build; dashboardOutModel.Version = AppVersionHelper.Version; dashboardOutModel.Manufacturer = AppVersionHelper.Manufacturer; dashboardOutModel.WebSite = AppVersionHelper.WebSite; dashboardOutModel.UpdateUrl = AppVersionHelper.UpdateUrl; dashboardOutModel.IPAdress = Request.HttpContext.Connection.LocalIpAddress.ToString(); dashboardOutModel.Port = Request.HttpContext.Connection.LocalPort.ToString(); dashboardOutModel.TotalUser = await userService.GetCountByWhereAsync("1=1"); dashboardOutModel.TotalModule = await menuService.GetCountByWhereAsync("1=1"); dashboardOutModel.TotalRole = await roleService.GetCountByWhereAsync("1=1"); dashboardOutModel.TotalTask = await taskManagerService.GetCountByWhereAsync("1=1"); result.ResData = dashboardOutModel; result.ErrCode = ErrCode.successCode; } catch (Exception ex) { Log4NetHelper.Error("获取系统信息异常", ex); result.ErrMsg = ErrCode.err60001; result.ErrCode = "60001"; } return(ToJsonContent(result)); }
/// <summary> /// 获取所有可用的地区,用于uniapp下拉选项 /// </summary> /// <returns></returns> public List <AreaPickerOutputDto> GetAllByEnable() { List <AreaPickerOutputDto> list = new List <AreaPickerOutputDto>(); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); list = JsonConvert.DeserializeObject <List <AreaPickerOutputDto> >(yuebonCacheHelper.Get("Area_Enable_Uniapp").ToJson()); if (list == null || list.Count <= 0) { List <Area> listFunction = _repository.GetAllByIsNotDeleteAndEnabledMark("Layers in (0,1,2)").OrderBy(t => t.SortCode).ToList(); list = UniappViewJson(listFunction, ""); yuebonCacheHelper.Add("Area_Enable_Uniapp", list); } return(list); }
/// <summary> /// 获取省可用的地区,用于select2下拉选项 /// </summary> /// <returns></returns> public List <AreaSelect2OutDto> GetProvinceAll() { List <AreaSelect2OutDto> list = new List <AreaSelect2OutDto>(); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); list = JsonConvert.DeserializeObject <List <AreaSelect2OutDto> >(yuebonCacheHelper.Get("Area_ProvinceToArea_Select2").ToJson()); if (list == null || list.Count <= 0) { list = service.GetAllByIsNotDeleteAndEnabledMark("Layers =1").OrderBy(t => t.Id).ToList().MapTo <AreaSelect2OutDto>(); yuebonCacheHelper.Add("Area_ProvinceToArea_Select2", list); } return(list); }
public IActionResult Save(SysSetting info) { CommonResult result = new CommonResult(); info.LocalPath = _hostingEnvironment.WebRootPath; SysSetting sysSetting = XmlConverter.Deserialize <SysSetting>("xmlconfig/sys.config"); sysSetting = info; //对关键信息加密 if (!string.IsNullOrEmpty(info.Email)) { sysSetting.Email = DEncrypt.Encrypt(info.Email); } if (!string.IsNullOrEmpty(info.Emailsmtp)) { sysSetting.Emailsmtp = DEncrypt.Encrypt(info.Emailsmtp); } if (!string.IsNullOrEmpty(info.Emailpassword)) { sysSetting.Emailpassword = DEncrypt.Encrypt(info.Emailpassword); } if (!string.IsNullOrEmpty(info.Smspassword)) { sysSetting.Smspassword = DEncrypt.Encrypt(info.Smspassword); } if (!string.IsNullOrEmpty(info.Smsusername)) { sysSetting.Smsusername = DEncrypt.Encrypt(info.Smsusername); } string uploadPath = _hostingEnvironment.WebRootPath + "/" + sysSetting.Filepath; if (!Directory.Exists(uploadPath)) { Directory.CreateDirectory(uploadPath); } YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); if (yuebonCacheHelper.Exists("SysSetting")) { yuebonCacheHelper.Replace("SysSetting", sysSetting); } else { //写入缓存 yuebonCacheHelper.Add("SysSetting", sysSetting); } XmlConverter.Serialize <SysSetting>(sysSetting, "xmlconfig/sys.config"); result.ErrCode = ErrCode.successCode; return(ToJsonContent(result)); }
/// <summary> /// 获取县区,用于select2下拉选项 /// </summary> /// <param name="id">城市Id</param> /// <returns></returns> public List <AreaSelect2OutDto> GetDistrictByCityId(string id) { List <AreaSelect2OutDto> list = new List <AreaSelect2OutDto>(); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); list = JsonConvert.DeserializeObject <List <AreaSelect2OutDto> >(yuebonCacheHelper.Get("Area_DistrictToArea_Enable_Select2" + id).ToJson()); if (list == null || list.Count <= 0) { string sqlWhere = string.Format("ParentId='{0}'", id); list = service.GetAllByIsNotDeleteAndEnabledMark(sqlWhere).OrderBy(t => t.Id).ToList().MapTo <AreaSelect2OutDto>(); yuebonCacheHelper.Add("Area_DistrictToArea_Enable_Select2" + id, list); } return(list); }
public async Task <CommonResult <AuthGetVerifyCodeOutputDto> > CaptchaAsync() { Captcha captcha = new Captcha(); var code = await captcha.GenerateRandomCaptchaAsync().ConfigureAwait(false); var result = await captcha.GenerateCaptchaImageAsync(code); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); TimeSpan expiresSliding = DateTime.Now.AddMinutes(5) - DateTime.Now; yuebonCacheHelper.Add("ValidateCode" + result.Timestamp.ToString("yyyyMMddHHmmssffff"), code, expiresSliding, false); AuthGetVerifyCodeOutputDto authGetVerifyCodeOutputDto = new AuthGetVerifyCodeOutputDto(); authGetVerifyCodeOutputDto.Img = Convert.ToBase64String(result.CaptchaMemoryStream.ToArray()); authGetVerifyCodeOutputDto.Key = result.Timestamp.ToString("yyyyMMddHHmmssffff"); CommonResult <AuthGetVerifyCodeOutputDto> commonResult = new CommonResult <AuthGetVerifyCodeOutputDto>(); commonResult.ErrCode = ErrCode.successCode; commonResult.ResData = authGetVerifyCodeOutputDto; return(commonResult); }
/// <summary> /// 获取省、市、县/区三级可用的地区,用于uniapp下拉选项 /// </summary> /// <returns></returns> public List <AreaPickerOutputDto> GetProvinceToAreaByEnable() { List <AreaPickerOutputDto> list = new List <AreaPickerOutputDto>(); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); list = JsonConvert.DeserializeObject <List <AreaPickerOutputDto> >(yuebonCacheHelper.Get("Area_ProvinceToArea_Enable_Uniapp").ToJson()); if (list == null || list.Count <= 0) { List <Area> listFunctionTemp = _repository.GetAllByIsNotDeleteAndEnabledMark("Layers in (1,2,3)").OrderBy(t => t.Id).ToList(); List <Area> listFunction = new List <Area>(); foreach (Area item in listFunctionTemp) { if (item.Layers == 1) { item.ParentId = ""; } listFunction.Add(item); } list = UniappViewJson(listFunction, ""); yuebonCacheHelper.Add("Area_ProvinceToArea_Enable_Uniapp", list); } return(list); }
public IActionResult GetInfo() { CommonResult result = new CommonResult(); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); SysSetting sysSetting = yuebonCacheHelper.Get("SysSetting").ToJson().ToObject <SysSetting>(); SysSettingOutputDto sysSettingOutputDto = new SysSettingOutputDto(); if (sysSetting == null) { sysSetting = XmlConverter.Deserialize <SysSetting>("xmlconfig/sys.config"); } sysSetting.Email = ""; sysSetting.Emailsmtp = ""; sysSetting.Emailpassword = ""; sysSetting.Smspassword = ""; sysSetting.SmsSignName = ""; sysSetting.Smsusername = ""; sysSettingOutputDto = sysSetting.MapTo <SysSettingOutputDto>(); if (sysSettingOutputDto != null) { sysSettingOutputDto.CopyRight = UIConstants.CopyRight; result.ResData = sysSettingOutputDto; result.Success = true; result.ErrCode = ErrCode.successCode; } else { result.ErrMsg = ErrCode.err60001; result.ErrCode = "60001"; } IEnumerable <APP> appList = aPPService.GetAllByIsNotDeleteAndEnabledMark(); yuebonCacheHelper.Add("AllowAppId", appList); return(ToJsonContent(result)); }
/// <summary> /// 全局过滤器验证签名 /// </summary> /// <param name="httpContext"></param> /// <returns></returns> public static CommonResult CheckSign(HttpContext httpContext) { CommonResult result = new CommonResult(); //从http请求的头里面获取参数 var request = httpContext.Request; var appId = ""; //客户端应用唯一标识 string nonce = ""; //随机字符串 var signature = ""; //参数签名,去除空参数,按字母倒序排序进行Md5签名 为了提高传参过程中,防止参数被恶意修改,在请求接口的时候加上sign可以有效防止参数被篡改 long timeStamp; //时间戳, 校验5分钟内有效 try { appId = request.Headers["appId"].SingleOrDefault(); nonce = request.Headers["nonce"].SingleOrDefault(); timeStamp = Convert.ToInt64(request.Headers["timeStamp"].SingleOrDefault()); signature = request.Headers["signature"].SingleOrDefault(); } catch (Exception ex) { result.ErrCode = "40004"; result.ErrMsg = "签名参数异常:" + ex.Message; return(result); } //appId是否为可用的 AllowCacheApp allowCacheApp = VerifyAppId(appId); if (allowCacheApp == null) { result.ErrCode = "40004"; result.ErrMsg = "AppId不被允许访问:" + appId; return(result); } //判断timespan是否有效,请求是否超时 DateTime tonow = timeStamp.UnixTimeToDateTime(); var expires_minute = tonow.Minute - DateTime.Now.Minute; if (expires_minute > 5 || expires_minute < -5) { result.ErrCode = "40004"; result.ErrMsg = "接口请求超时"; return(result); } //根据请求类型拼接参数 NameValueCollection form = HttpUtility.ParseQueryString(request.QueryString.ToString()); var data = string.Empty; if (form.Count > 0) { data = GetQueryString(form); } else { //request.EnableBuffering(); request.Body.Seek(0, SeekOrigin.Begin); Stream stream = request.Body; StreamReader streamReader = new StreamReader(stream); data = streamReader.ReadToEndAsync().Result; request.Body.Seek(0, SeekOrigin.Begin); } YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); object reqtimeStampCache = yuebonCacheHelper.Get("request_" + timeStamp + nonce); if (reqtimeStampCache != null) { result.ErrCode = "40004"; result.ErrMsg = "无效签名"; return(result); } TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now; yuebonCacheHelper.Add("request_" + timeStamp + nonce, timeStamp + nonce, expiresSliding); bool blValidate = Validate(timeStamp.ToString(), nonce, allowCacheApp.AppSecret, data, signature); if (!blValidate) { result.ErrCode = "40004"; result.ErrMsg = "无效签名"; return(result); } else { result.ErrCode = "0"; result.Success = true; return(result); } }
public IActionResult LoginByOpenId(string openId) { CommonResult result = new CommonResult(); try { YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); User user = userService.GetUserByOpenId("yuebon.openid.wxapplet", openId); if (user == null) { UserInputDto userInput = new UserInputDto(); userInput.OpenId = openId; userInput.OpenIdType = "yuebon.openid.wxapplet"; userInput.NickName = "游客"; result.Success = userService.CreateUserByWxOpenId(userInput); } string userId = string.Empty; if (result.ResData != null) { userId = result.ResData.ToString(); } if (user == null) { user = userService.GetUserByOpenId("yuebon.openid.wxapplet", openId); } var currentSession = (YuebonCurrentUser)yuebonCacheHelper.Get("login_user_" + user.Id); if (currentSession == null || string.IsNullOrWhiteSpace(currentSession.AccessToken)) { JwtOption jwtModel = App.GetService <JwtOption>(); TokenProvider tokenProvider = new TokenProvider(jwtModel); TokenResult tokenResult = tokenProvider.LoginToken(user, "wxapplet"); currentSession = new YuebonCurrentUser { UserId = user.Id, Account = user.Account, Name = user.RealName, NickName = user.NickName, AccessToken = tokenResult.AccessToken, AppKey = "wxapplet", CreateTime = DateTime.Now, HeadIcon = user.HeadIcon, Gender = user.Gender, ReferralUserId = user.ReferralUserId, MemberGradeId = user.MemberGradeId, Role = roleService.GetRoleEnCode(user.RoleId), MobilePhone = user.MobilePhone }; TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now; yuebonCacheHelper.Add("login_user_" + user.Id, currentSession, expiresSliding, true); } CurrentUser = currentSession; result.ErrCode = ErrCode.successCode; result.Success = true; result.ResData = currentSession; //new AuthorizeApp().GetAccessedControls(user.Account); } catch (Exception ex) { Log4NetHelper.Error("微信登录异常 LoginByOpenId", ex); result.ErrMsg = "微信登录异常:" + ex.Message; result.ErrCode = ErrCode.successCode; } return(ToJsonContent(result)); }
public IActionResult SysConnect(string openmf, string appId, string systemCode) { CommonResult result = new CommonResult(); RemoteIpParser remoteIpParser = new RemoteIpParser(); string strIp = remoteIpParser.GetClientIp(HttpContext).MapToIPv4().ToString(); if (string.IsNullOrEmpty(openmf)) { result.ErrMsg = "切换参数错误!"; } bool blIp = _filterIPService.ValidateIP(strIp); if (blIp) { result.ErrMsg = strIp + "该IP已被管理员禁止登录!"; } else { string ipAddressName = IpAddressUtil.GetCityByIp(strIp); if (string.IsNullOrEmpty(systemCode)) { result.ErrMsg = ErrCode.err40006; } else { string strHost = Request.Host.ToString(); APP app = _appService.GetAPP(appId); if (app == null) { result.ErrCode = "40001"; result.ErrMsg = ErrCode.err40001; } else { if (!app.RequestUrl.Contains(strHost, StringComparison.Ordinal) && !strHost.Contains("localhost", StringComparison.Ordinal)) { result.ErrCode = "40002"; result.ErrMsg = ErrCode.err40002 + ",你当前请求主机:" + strHost; } else { SystemType systemType = _systemTypeService.GetByCode(systemCode); if (systemType == null) { result.ErrMsg = ErrCode.err40006; } else { YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); object cacheOpenmf = yuebonCacheHelper.Get("openmf" + openmf); yuebonCacheHelper.Remove("openmf" + openmf); if (cacheOpenmf == null) { result.ErrCode = "40007"; result.ErrMsg = ErrCode.err40007; } else { User user = _userService.Get(cacheOpenmf.ToString()); if (user != null) { result.Success = true; JwtOption jwtModel = App.GetService <JwtOption>(); TokenProvider tokenProvider = new TokenProvider(jwtModel); TokenResult tokenResult = tokenProvider.LoginToken(user, appId); YuebonCurrentUser currentSession = new YuebonCurrentUser { UserId = user.Id, Name = user.RealName, AccessToken = tokenResult.AccessToken, AppKey = appId, CreateTime = DateTime.Now, Role = _roleService.GetRoleEnCode(user.RoleId), ActiveSystemId = systemType.Id, CurrentLoginIP = strIp, IPAddressName = ipAddressName, ActiveSystemUrl = systemType.Url }; TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now; yuebonCacheHelper.Add("login_user_" + user.Id, currentSession, expiresSliding, true); CurrentUser = currentSession; result.ResData = currentSession; result.ErrCode = ErrCode.successCode; result.Success = true; } else { result.ErrCode = ErrCode.failCode; } } } } } } } return(ToJsonContent(result)); }
public IActionResult GetUserInfo() { CommonResult result = new CommonResult(); User user = _userService.Get(CurrentUser.UserId); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); SystemType systemType = _systemTypeService.Get(CurrentUser.ActiveSystemId); YuebonCurrentUser currentSession = new YuebonCurrentUser { UserId = user.Id, Account = user.Account, Name = user.RealName, NickName = user.NickName, AccessToken = CurrentUser.AccessToken, AppKey = CurrentUser.AppKey, CreateTime = DateTime.Now, HeadIcon = user.HeadIcon, Gender = user.Gender, ReferralUserId = user.ReferralUserId, MemberGradeId = user.MemberGradeId, Role = _roleService.GetRoleEnCode(user.RoleId), MobilePhone = user.MobilePhone, OrganizeId = user.OrganizeId, DeptId = user.DepartmentId, CurrentLoginIP = CurrentUser.CurrentLoginIP, IPAddressName = CurrentUser.IPAddressName, TenantId = "" }; CurrentUser = currentSession; CurrentUser.ActiveSystemId = systemType.Id; CurrentUser.ActiveSystem = systemType.FullName; CurrentUser.ActiveSystemUrl = systemType.Url; List <MenuOutputDto> listFunction = new List <MenuOutputDto>(); MenuApp menuApp = new MenuApp(); if (Permission.IsAdmin(CurrentUser)) { CurrentUser.SubSystemList = _systemTypeService.GetAllByIsNotDeleteAndEnabledMark().MapTo <SystemTypeOutputDto>(); //取得用户可使用的授权功能信息,并存储在缓存中 listFunction = menuApp.GetFunctionsBySystem(CurrentUser.ActiveSystemId); CurrentUser.MenusRouter = menuApp.GetVueRouter("", systemType.EnCode); } else { CurrentUser.SubSystemList = _systemTypeService.GetSubSystemList(user.RoleId); //取得用户可使用的授权功能信息,并存储在缓存中 listFunction = menuApp.GetFunctionsByUser(user.Id, CurrentUser.ActiveSystemId); CurrentUser.MenusRouter = menuApp.GetVueRouter(user.RoleId, systemType.EnCode); } UserLogOn userLogOn = _userLogOnService.GetByUserId(CurrentUser.UserId); CurrentUser.UserTheme = userLogOn.Theme == null ? "default" : userLogOn.Theme; TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now; yuebonCacheHelper.Add("User_Function_" + user.Id, listFunction, expiresSliding, true); List <string> listModules = new List <string>(); foreach (MenuOutputDto item in listFunction) { listModules.Add(item.EnCode); } CurrentUser.Modules = listModules; yuebonCacheHelper.Add("login_user_" + user.Id, CurrentUser, expiresSliding, true); //该用户的数据权限 List <String> roleDateList = _roleDataService.GetListDeptByRole(user.RoleId); yuebonCacheHelper.Add("User_RoleData_" + user.Id, roleDateList, expiresSliding, true); result.ResData = CurrentUser; result.ErrCode = ErrCode.successCode; result.Success = true; return(ToJsonContent(result, true)); }
public IActionResult OnLogin(string code) { CommonResult result = new CommonResult(); try { var jsonResult = SnsApi.JsCode2Json(WxOpenAppId, WxOpenAppSecret, code); if (jsonResult.errcode == ReturnCode.请求成功) { //使用SessionContainer管理登录信息(推荐) var unionId = jsonResult.unionid; var sessionBag = SessionContainer.UpdateSession(null, jsonResult.openid, jsonResult.session_key, unionId); //注意:生产环境下SessionKey属于敏感信息,不能进行传输! //return Json(new { success = true, msg = "OK", sessionId = sessionBag.Key, sessionKey = sessionBag.SessionKey }); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); //User user = userApp.GetUserByUnionId(unionId); User user = userService.GetUserByOpenId("yuebon.openid.wxapplet", jsonResult.openid); if (user == null) { UserInputDto userInput = new UserInputDto(); userInput.OpenId = jsonResult.openid; user.UnionId = jsonResult.unionid; userInput.OpenIdType = "yuebon.openid.wxapplet"; userInput.NickName = "游客"; userInput.UnionId = jsonResult.unionid; result.Success = userService.CreateUserByWxOpenId(userInput); } //针对老用户更新UnionId if (user != null && string.IsNullOrEmpty(user.UnionId)) { user.UnionId = jsonResult.unionid; result.Success = userService.Update(user, user.Id); } string userId = string.Empty; if (result.ResData != null) { userId = result.ResData.ToString(); } if (user == null) { user = userService.GetUserByOpenId("yuebon.openid.wxapplet", jsonResult.openid); } var currentSession = (YuebonCurrentUser)(yuebonCacheHelper.Get("login_user_" + userId)); if (currentSession == null || string.IsNullOrWhiteSpace(currentSession.AccessToken)) { JwtOption jwtModel = App.GetService <JwtOption>(); TokenProvider tokenProvider = new TokenProvider(jwtModel); TokenResult tokenResult = tokenProvider.LoginToken(user, "wxapplet"); currentSession = new YuebonCurrentUser { UserId = user.Id, Account = user.Account, Name = user.RealName, NickName = user.NickName, AccessToken = tokenResult.AccessToken, AppKey = "wxapplet", CreateTime = DateTime.Now, HeadIcon = user.HeadIcon, Gender = user.Gender, ReferralUserId = user.ReferralUserId, MemberGradeId = user.MemberGradeId, Role = roleService.GetRoleEnCode(user.RoleId), MobilePhone = user.MobilePhone, WxSessionId = sessionBag.Key }; TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now; yuebonCacheHelper.Add("login_user_" + user.Id, currentSession, expiresSliding, true); } CurrentUser = currentSession; result.ResData = currentSession; //new AuthorizeApp().GetAccessedControls(user.Account); result.ErrCode = ErrCode.successCode; result.Success = true; } else { result.ErrCode = ErrCode.failCode; result.ErrMsg = jsonResult.errmsg; } } catch (Exception ex) { result.ErrMsg = ex.Message; } return(ToJsonContent(result)); }
public async Task <IActionResult> GetCheckUser(string username, string password, string vcode, string vkey, string appId, string systemCode) { CommonResult result = new CommonResult(); RemoteIpParser remoteIpParser = new RemoteIpParser(); string strIp = remoteIpParser.GetClientIp(HttpContext).MapToIPv4().ToString(); YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); var vCode = yuebonCacheHelper.Get("ValidateCode" + vkey); string code = vCode != null?vCode.ToString() : "11"; if (vcode.ToUpper() != code) { result.ErrMsg = "验证码错误"; return(ToJsonContent(result)); } Log logEntity = new Log(); bool blIp = _filterIPService.ValidateIP(strIp); if (blIp) { result.ErrMsg = strIp + "该IP已被管理员禁止登录!"; } else { if (string.IsNullOrEmpty(username)) { result.ErrMsg = "用户名不能为空!"; } else if (string.IsNullOrEmpty(password)) { result.ErrMsg = "密码不能为空!"; } if (string.IsNullOrEmpty(systemCode)) { result.ErrMsg = ErrCode.err40006; } else { string strHost = Request.Host.ToString(); APP app = _appService.GetAPP(appId); if (app == null) { result.ErrCode = "40001"; result.ErrMsg = ErrCode.err40001; } else { if (!app.RequestUrl.Contains(strHost, StringComparison.Ordinal) && !strHost.Contains("localhost", StringComparison.Ordinal)) { result.ErrCode = "40002"; result.ErrMsg = ErrCode.err40002 + ",你当前请求主机:" + strHost; } else { SystemType systemType = _systemTypeService.GetByCode(systemCode); if (systemType == null) { result.ErrMsg = ErrCode.err40006; } else { Tuple <User, string> userLogin = await this._userService.Validate(username, password); if (userLogin != null) { string ipAddressName = IpAddressUtil.GetCityByIp(strIp); if (userLogin.Item1 != null) { result.Success = true; User user = userLogin.Item1; JwtOption jwtModel = App.GetService <JwtOption>(); TokenProvider tokenProvider = new TokenProvider(jwtModel); TokenResult tokenResult = tokenProvider.LoginToken(user, appId); YuebonCurrentUser currentSession = new YuebonCurrentUser { UserId = user.Id, Name = user.RealName, AccessToken = tokenResult.AccessToken, AppKey = appId, CreateTime = DateTime.Now, Role = _roleService.GetRoleEnCode(user.RoleId), ActiveSystemId = systemType.Id, CurrentLoginIP = strIp, IPAddressName = ipAddressName }; TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now; yuebonCacheHelper.Add("login_user_" + user.Id, currentSession, expiresSliding, true); List <AllowCacheApp> list = yuebonCacheHelper.Get("AllowAppId").ToJson().ToList <AllowCacheApp>(); if (list.Count == 0) { IEnumerable <APP> appList = _appService.GetAllByIsNotDeleteAndEnabledMark(); yuebonCacheHelper.Add("AllowAppId", appList); } CurrentUser = currentSession; result.ResData = currentSession; result.ErrCode = ErrCode.successCode; result.Success = true; logEntity.Account = user.Account; logEntity.NickName = user.NickName; logEntity.Date = logEntity.CreatorTime = DateTime.Now; logEntity.IPAddress = CurrentUser.CurrentLoginIP; logEntity.IPAddressName = CurrentUser.IPAddressName; logEntity.Result = true; logEntity.ModuleName = "登录"; logEntity.Description = "登录成功"; logEntity.Type = "Login"; _logService.Insert(logEntity); } else { result.ErrCode = ErrCode.failCode; result.ErrMsg = userLogin.Item2; logEntity.Account = username; logEntity.Date = logEntity.CreatorTime = DateTime.Now; logEntity.IPAddress = strIp; logEntity.IPAddressName = ipAddressName; logEntity.Result = false; logEntity.ModuleName = "登录"; logEntity.Type = "Login"; logEntity.Description = "登录失败," + userLogin.Item2; _logService.Insert(logEntity); } } } } } } } yuebonCacheHelper.Remove("LoginValidateCode"); return(ToJsonContent(result, true)); }
public IActionResult QuikLogin(WxUserInfo info) { CommonResult result = new CommonResult(); try { if (info != null) { DecodedUserInfo decodedUserInfo = EncryptHelper.DecodeUserInfoBySessionId(info.SessionId, info.EncryptedData, info.Iv); UserInputDto userInput = new UserInputDto(); userInput.NickName = decodedUserInfo.nickName; userInput.HeadIcon = decodedUserInfo.avatarUrl; userInput.Gender = decodedUserInfo.gender; userInput.Country = decodedUserInfo.country; userInput.Province = decodedUserInfo.province; userInput.City = decodedUserInfo.city; userInput.language = info.language; userInput.OpenId = decodedUserInfo.openId; userInput.OpenIdType = "yuebon.openid.wxapplet"; userInput.ReferralUserId = info.ReferralUserId; userInput.UnionId = decodedUserInfo.unionId; User user = userService.GetUserByOpenId(userInput.OpenIdType, decodedUserInfo.openId); if (user == null) { result.Success = userService.CreateUserByWxOpenId(userInput); } else { result.Success = userService.UpdateUserByOpenId(userInput); } user = userService.GetUserByOpenId(info.openIdType, info.openId); if (user != null) { JwtOption jwtModel = App.GetService <JwtOption>(); TokenProvider tokenProvider = new TokenProvider(jwtModel); TokenResult tokenResult = tokenProvider.LoginToken(user, "wxapplet"); var currentSession = new YuebonCurrentUser { UserId = user.Id, Account = user.Account, Name = user.RealName, NickName = user.NickName, AccessToken = tokenResult.AccessToken, AppKey = "wxapplet", CreateTime = DateTime.Now, HeadIcon = user.HeadIcon, Gender = user.Gender, ReferralUserId = user.ReferralUserId, MemberGradeId = user.MemberGradeId, Role = roleService.GetRoleEnCode(user.RoleId) }; CurrentUser = currentSession; YuebonCacheHelper yuebonCacheHelper = new YuebonCacheHelper(); TimeSpan expiresSliding = DateTime.Now.AddMinutes(120) - DateTime.Now; yuebonCacheHelper.Add("login_user_" + user.Id, currentSession, expiresSliding, true); result.ErrCode = ErrCode.successCode; result.ResData = currentSession; result.Success = true; } else { result.ErrCode = ErrCode.failCode; } } }catch (Exception ex) { Log4NetHelper.Error("微信快速(一键)登录异常", ex); result.ErrMsg = "微信快速(一键)登录:" + ex.Message; result.ErrCode = ErrCode.failCode; } return(ToJsonContent(result)); }