/// <summary> /// 判断用户登录角色 /// </summary> /// <param name="username">用户名</param> /// <param name="password">密码</param> /// <param name="rememberPassWordFlag">记住密码标识</param> /// <param name="rturl">返回路径</param> /// <param name="ip"></param> /// <param name="SpecialUrl">特殊的Url 供店铺装修使用</param> /// <returns></returns> public Base CheckAndLogin(string username, string password, string ip, bool rememberPassWordFlag, out SoUser soUser) { soUser = new SoUser(); Base b = new Base(); ExUser ex; string msg = string.Empty; #region 用户登录 try { using (var db = new EFContext()) { var f = db.selmanager.FirstOrDefault(x => x.IsDel == 0 && x.IsLock == 0 && x.LoginName.ToLower() == username && x.LoginPwd.ToLower() == password); if (f != null) { var shop = db.selshop.FirstOrDefault(x => x.ID == f.ShopID); #region addcookie SoUser sm = new SoUser(); sm.UserName = f.LoginName; sm.NickName = f.NickName; sm.ManagerId = f.ID; sm.ShopId = f.ShopID; sm.IsOwner = f.IsOwner; sm.ShopName = shop.ShopName; sm.UserLoginType = (int)UserLoginType.UserSelf; sm.IP = ip; bool flag = SoLogin.Login(sm); #endregion #region 处理登录成功结果 if (flag) { b.Code = 1; b.Message = "登录成功!"; soUser = sm; return(b); } else { b.Code = 0; b.Message = "登录失败!"; soUser = sm; return(b); } #endregion } else { b.Code = 0; b.Message = "登录失败!"; } } } catch (Exception Exc) { b.Code = 0; b.Message = "登录异常"; } #endregion return(b); }
public ContentResult LoginOut() { bool b = SoLogin.LoginOut(); return(Content(b.ToString())); }
public JsonResult UserReg(FormCollection form) { #region field ViewUserReg b = new ViewUserReg(); DateTime dt1 = DateTime.Now; var iLog = log4net.LogManager.GetLogger("LogToTXT"); //仿照sso添加登录信息模型 string msg = string.Empty; bool flag = false; string tg = form.Get("tg"); string userName = form.Get("userName"); string password = form.Get("password"); string cpassword = form.Get("cpassword"); string email = form.Get("email"); string phone = form.Get("phone"); string validatecode = form.Get("validatecode"); string validateid = form.Get("validateid"); #endregion #region 开始验证 #region 判断用户密码是否为空 if (string.IsNullOrEmpty(validateid)) { flag = true; msg = string.Format("验证码不能为空!"); } if (string.IsNullOrEmpty(validatecode)) { flag = true; msg = string.Format("验证码不能为空!"); } if (password != cpassword) { flag = true; msg = string.Format("两次输入的密码不相同!"); } if (string.IsNullOrEmpty(cpassword)) { flag = true; msg = string.Format("确认密码不能为空!"); } if (string.IsNullOrEmpty(password)) { flag = true; msg = string.Format("密码不能为空!"); } if (string.IsNullOrEmpty(email)) { flag = true; msg = string.Format("邮箱不能为空!"); } if (string.IsNullOrEmpty(userName)) { flag = true; msg = string.Format("用户名不能为空!"); } #endregion #region 开始校验 if (Session["ValidateCode"] == null || validatecode != Session["ValidateCode"].ToString()) { flag = true; msg = string.Format("验证码输入不正确!"); } if (Session["ValidateId"] == null || validateid != Session["ValidateId"].ToString()) { flag = true; msg = string.Format("验证码输入不正确!"); } if (Session["Email"] == null || email != Session["Email"].ToString()) { flag = true; msg = string.Format("验证码输入不正确!"); } #endregion #region 开始判断 if (flag) { ViewBag.Email = email; ViewBag.UserName = userName; ViewBag.Phone = phone; b.Code = 0; b.Message = msg; return(Json(b)); } var bbb = RegexHelper.CheckPassword(password); if (bbb.Code == 0) { b.Code = 0; b.Message = bbb.Message; return(Json(b)); } var bbbb = RegexHelper.CheckUserName(userName); if (bbbb.Code == 0) { b.Code = 0; b.Message = bbbb.Message; return(Json(b)); } #endregion #endregion #region 用户注册 try { #region httpclient var apiUrl = ConfigHelper.GetApiUrl; var url = string.Format(apiUrl + "/api/so/postRegister"); using (var http = new HttpClient()) { var content = new FormUrlEncodedContent(new Dictionary <string, string>() { { "safecode", SafeCodeHelper.GetSafeCode }, { "username", userName }, { "password", password }, { "email", email }, { "tg", tg } }); var response = http.PostAsync(url, content).Result; if (response.StatusCode == System.Net.HttpStatusCode.OK) { NewBase <ExRegUser> bb = JsonConvert.DeserializeObject <NewBase <ExRegUser> >(response.Content.ReadAsStringAsync().Result); if (bb.Code == 1) { b.Code = 1; //采用服务端的返回提示 // b.Message = "注册成功!"; b.Url = ConfigHelper.GetHomeUrl; b.Message = bb.Message; //清理注册Session Session["ValidateCode"] = null; Session["ValidateId"] = null; Session["Email"] = null; //登录成功之后 默认用户登录 然后跳转到用户后台 SoUser sm = new SoUser(); sm.UserName = userName; sm.NickName = userName; sm.IP = SM.Current.IPManager.GetIP(); sm.ManagerId = bb.Data.UGUID; bool isLogin = SoLogin.Login(sm); return(Json(b)); } else { b.Code = 0; //采用服务端的返回提示 //b.Message = "注册失败!"; b.Message = bb.Message; return(Json(b)); } } else { b.Code = 0; b.Message = response.ReasonPhrase; return(Json(b)); } } #endregion } catch (Exception Exc) { b.Code = 0; b.Message = "注册异常!"; return(Json(b)); } #endregion }
public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); #region home string soLibID = SoLogin.IsLogin(); var model = SoLogin.GetUserModel(); if (string.IsNullOrEmpty(soLibID) || model == null) { if (filterContext.HttpContext.Request.IsAjaxRequest())//处理Ajax请求 { JsonResult jr = new JsonResult(); jr.Data = new { Code = -200, Message = "登录超时,请重新登录再操作!", Data = "", Url = ConfigHelper.GetSoUrl }; jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet; filterContext.Result = jr; } else { string url = filterContext.HttpContext.Request.Url.ToString(); string regexString = ConfigHelper.GetHomeUrl + @":\d{0,5}"; Regex regex = new Regex(regexString); if (regex.IsMatch(url)) { url = regex.Replace(url, ConfigHelper.GetHomeUrl); } var rawurl = System.Web.HttpUtility.UrlEncode(url); //string loginSoUrl = ConfigHelper.GetSoLoginUrl; string loginSoUrl = string.Format("{0}?url={1}", ConfigHelper.GetSoUrl, rawurl); string newurl = loginSoUrl; filterContext.Result = new RedirectResult(newurl); } } else { using (var db = new EFContext()) { var query = new List <Menu>().AsQueryable(); var selshop = db.selshop.FirstOrDefault(x => x.ID == model.ShopId); var selmanagerowner = db.selmanager.FirstOrDefault(x => x.ShopID == model.ShopId && x.IsOwner == 1); var selmanagerroleowner = db.selmanager_role.FirstOrDefault(x => x.SelManagerID == selmanagerowner.ID); var rolepemitidowner = db.selrole_pemit.Where(x => x.SelRoleID == selmanagerroleowner.SelRoleID).Select(x => x.SelPemitID).ToList(); var selmanagerrole = db.selmanager_role.FirstOrDefault(x => x.SelManagerID == model.ManagerId); var rolepemitid = db.selrole_pemit.Where(x => x.SelRoleID == selmanagerrole.SelRoleID).Select(x => x.SelPemitID).ToList(); if (model.IsOwner == 1) { query = db.selpemit.Where(x => x.IsMenu == 1) .Where(x => rolepemitid.Contains(x.ID)) .Select(x => new Menu { MenuId = x.ID }); } else { //管理员权限下面的 有效权限 query = db.selpemit.Where(x => x.IsMenu == 1) .Where(x => rolepemitid.Contains(x.ID)) .Where(x => rolepemitidowner.Contains(x.ID)) .Select(x => new Menu() { MenuId = x.ID }); } var listmenu = query.ToList(); bool hasAuthorization = false; var f = listmenu.FirstOrDefault(a => a.MenuId == menuId.ToString()); if (f != null) { hasAuthorization = true; } if (!hasAuthorization)//没有权限 { string redirecturl = string.Format("{0}/{1}/ErrorNopermit", ConfigHelper.GetHomeUrl, "Common"); if (filterContext.HttpContext.Request.IsAjaxRequest())//处理Ajax请求 { JsonResult jr = new JsonResult(); jr.Data = new { Code = -200, Message = "没有访问权限!", Data = "", Url = redirecturl }; jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet; filterContext.Result = jr; } else { filterContext.Result = new RedirectResult(redirecturl); } } else { base.OnActionExecuting(filterContext); } } } #endregion }
protected override void OnActionExecuting(ActionExecutingContext filterContext) { #region test //filterContext.HttpContext.Session["ManagerId"] = 3; //filterContext.HttpContext.Session["ShopId"] = 1; #endregion #region home var controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName; var actionName = filterContext.ActionDescriptor.ActionName; string tempurl = string.Format("/{0}/{1}", controllerName, actionName); //var selpemit = DB.selpemit.Value.FirstOrDefault(x => x.Url == tempurl); //if (selpemit == null) //{ // filterContext.Controller.ViewBag.menuid = 0; //} //else //{ // filterContext.Controller.ViewBag.menuid = selpemit.ID; //} string soLibID = SoLogin.IsLogin(); var model = SoLogin.GetUserModel(); if (string.IsNullOrEmpty(soLibID) || model == null) { if (filterContext.HttpContext.Request.IsAjaxRequest())//处理Ajax请求 { JsonResult jr = new JsonResult(); jr.Data = new { Code = -200, Message = "登录超时,请重新登录再操作!", Data = "", Url = ConfigHelper.GetSoUrl }; jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet; filterContext.Result = jr; } else { string url = filterContext.HttpContext.Request.Url.ToString(); string regexString = ConfigHelper.GetWwwUrl + @":\d{0,5}"; Regex regex = new Regex(regexString); if (regex.IsMatch(url)) { url = regex.Replace(url, ConfigHelper.GetWwwUrl); } var rawurl = System.Web.HttpUtility.UrlEncode(url); //string loginSoUrl = ConfigHelper.GetSoLoginUrl; string loginSoUrl = string.Format("{0}?url={1}", ConfigHelper.GetSoUrl, System.Web.HttpUtility.UrlEncode(rawurl)); string newurl = loginSoUrl; filterContext.Result = new RedirectResult(newurl); } } else { using (var db = new EFContext()) { //控制左边菜单显示 var query = new List <ViewPemit>(); var selshop = db.selshop.Where(x => x.ID == model.ShopId).Select(x => new { x.ID, x.AuditStatus, x.VersionID }).FirstOrDefault(); if (selshop.AuditStatus != 1) { query.Add(new ViewPemit() { ID = "1000", IsDel = 0, PemitType = 0, Title = "完善资料", Sort = 99, Url = "/SM/CompleteInfo", ParentID = "8" }); } //查询网店所有者用户拥有的权限 var selmanagerowner = db.selmanager.FirstOrDefault(x => x.ShopID == model.ShopId && x.IsOwner == 1); var selmanagerroleowner = db.selmanager_role.FirstOrDefault(x => x.SelManagerID == selmanagerowner.ID); var rolepemitidowner = db.selrole_pemit.Where(x => x.SelRoleID == selmanagerroleowner.SelRoleID).Select(x => x.SelPemitID).ToList(); var selmanagerrole = db.selmanager_role.FirstOrDefault(x => x.SelManagerID == model.ManagerId); var rolepemitid = db.selrole_pemit.Where(x => x.SelRoleID == selmanagerrole.SelRoleID).Select(x => x.SelPemitID).ToList(); if (model.IsOwner == 1) { query = db.selpemit.Where(x => x.IsMenu == 1) .Where(x => rolepemitid.Contains(x.ID)) .Select(x => new ViewPemit() { ID = x.ID, Title = x.Title, ParentID = x.ParentID, IsDel = x.IsDel, ImgUrl = x.ImgUrl, PemitType = x.PemitType, Sort = x.Sort, Url = x.Url }).ToList(); } else { //管理员权限下面的 有效权限 query = db.selpemit.Where(x => x.IsMenu == 1) .Where(x => rolepemitid.Contains(x.ID)) .Where(x => rolepemitidowner.Contains(x.ID)) .Select(x => new ViewPemit() { ID = x.ID, Title = x.Title, ParentID = x.ParentID, IsDel = x.IsDel, ImgUrl = x.ImgUrl, PemitType = x.PemitType, Sort = x.Sort, Url = x.Url }).ToList(); } filterContext.Controller.ViewBag.MenuList = query; filterContext.Controller.ViewBag.menuid = 0; } if (model.UserLoginType == (int)UserLoginType.UserSelf || model.UserLoginType == (int)UserLoginType.Manager) { if (filterContext.HttpContext.Session["SoLibID"] == null || filterContext.HttpContext.Session["SoLibID"].ToString() != soLibID) { filterContext.HttpContext.Session["SoLibID"] = soLibID; filterContext.HttpContext.Session["ManagerId"] = model.ManagerId; filterContext.HttpContext.Session["UserName"] = model.UserName; filterContext.HttpContext.Session["NickName"] = model.NickName; filterContext.HttpContext.Session["ShopId"] = model.ShopId; filterContext.HttpContext.Session["ShopName"] = model.ShopName; filterContext.HttpContext.Session["IsOwner"] = model.IsOwner; } } else if (model.UserLoginType == (int)UserLoginType.SubAccount) { if (filterContext.HttpContext.Session["SoLibID"] == null || filterContext.HttpContext.Session["SoLibID"].ToString() != soLibID) { filterContext.HttpContext.Session["SoLibID"] = soLibID; filterContext.HttpContext.Session["ManagerId"] = model.ManagerId; filterContext.HttpContext.Session["UserName"] = model.UserName; filterContext.HttpContext.Session["NickName"] = model.NickName; filterContext.HttpContext.Session["ShopId"] = model.ShopId; filterContext.HttpContext.Session["ShopName"] = model.ShopName; filterContext.HttpContext.Session["IsOwner"] = model.IsOwner; } } else { if (filterContext.HttpContext.Request.IsAjaxRequest())//处理Ajax请求 { JsonResult jr = new JsonResult(); jr.Data = new { Code = 0, Message = "没有访问权限!", Data = "" }; jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet; filterContext.Result = jr; } else { string wwwUrl = ConfigHelper.GetWwwUrl; string url = wwwUrl; filterContext.Result = new RedirectResult(url); } } filterContext.Controller.ViewBag.UserName = model.UserName; string VersionName = string.Empty; //获取店铺等级 using (var db = new EFContext()) { var selshop = db.selshop.FirstOrDefault(x => x.ID == model.ShopId); model.ShopName = selshop.ShopName; var sysversion = db.sysversion.FirstOrDefault(x => x.VersionID == selshop.VersionID); if (sysversion != null) { VersionName = sysversion.Name; } } filterContext.Controller.ViewBag.ShopName = model.ShopName; filterContext.Controller.ViewBag.VersionName = VersionName; } #endregion }