/// <summary>登录或注册完成后,保存登录信息</summary> /// <param name="user"></param> /// <param name="ps">附加参数</param> protected override Object SaveLogin(IManageUser user, IDictionary <String, Object> ps) { if (!(user is Device dv)) { return(base.SaveLogin(user, ps)); } Fill(dv, ps); if (Online is DeviceOnline olt) { olt.ProductID = dv.ProductID; } var ns = Session as INetSession; dv.Logins++; dv.LastLoginIP = ns.Remote.Address + ""; dv.LastLogin = DateTime.Now; dv.Save(); // 一分钟之类注册,返回编码 if (dv.CreateTime.AddSeconds(60) > DateTime.Now) { return(new { Name = user + "", DeviceKey = dv.Code, DeviceSecret = dv.Secret, }); } return(new { Name = user + "" }); }
/// <summary>设置当前用户</summary> /// <param name="user"></param> /// <param name="context"></param> public override void SetCurrent(IManageUser user, IServiceProvider context = null) { var ctx = (ModelExtension.GetService <IHttpContextAccessor>(context) ?? Context) ?.HttpContext; if (ctx == null) { return; } ctx.Items["CurrentUser"] = user; var session = ctx.Items["Session"] as IDictionary <String, Object>; if (session == null) { return; } var key = SessionKey; // 特殊处理注销 if (user == null) { session.Remove(key); session.Remove("userId"); } else { session[key] = user; session["userId"] = user.ID; } }
protected void Page_Load(object sender, EventArgs e) { //HmTrace.WriteWarn("我来了这里99"); if (!IsPostBack) { // 引发反向工程 ThreadPoolX.QueueUserWorkItem(delegate() { EntityFactory.CreateOperate(ManageProvider.Provider.ManageUserType).FindCount(); }); IManageUser user = ManageProvider.Provider.Current; //HmTrace.WriteWarn("我来了这里99"); if (user != null) { if (String.Equals("logout", Request["action"], StringComparison.OrdinalIgnoreCase)) { IAdministrator admin = user as IAdministrator; if (admin == null) { admin.Logout(); } } else { Response.Redirect("Default.aspx"); } } } }
/// <summary>根据验证结果获取跳转回子系统的Url</summary> /// <param name="key"></param> /// <param name="user"></param> /// <returns></returns> public override String GetResult(Int32 key, IManageUser user) { var id = 0; var rs = true; var msg = ""; try { var k = "Model:" + key; var model = Cache.Get <Model>(k); if (model != null) { id = App.FindByName(model.AppID)?.ID ?? 0; } var url = base.GetResult(key, user); msg = $"key={key},user={user.ID}/{user},url={url}"; return(url); } catch (Exception ex) { rs = false; msg = ex.GetTrue()?.Message; throw; } finally { AppLog.Create(id, nameof(GetResult), rs, msg); } }
/// <summary>设置当前用户</summary> /// <param name="user"></param> /// <param name="context"></param> public override void SetCurrent(IManageUser user, IServiceProvider context = null) { if (context == null) { context = HttpContext.Current; } var ss = context.GetService <HttpSessionState>(); if (ss == null) { return; } var key = SessionKey; // 特殊处理注销 if (user == null) { // 修改Session ss.Remove(key); //if (ss[key] is IAuthUser au) //{ // au.Online = false; // au.Save(); //} } else { // 修改Session ss[key] = user; } }
/// <summary>登录或注册完成后,保存登录信息</summary> /// <param name="user"></param> protected override void SaveLogin(IManageUser user) { var u = user as IMyModel; u.Type = Type; u.Version = Version; if (u.NickName.IsNullOrEmpty()) { u.NickName = "{0}{1}".F(Agent, user.Name); } var dic = ControllerContext.Current?.Parameters?.ToNullable(); if (dic != null) { NetType = dic["NetType"] + ""; var olt = Online as IMyOnline; olt.LoginTime = DateTime.Now; olt.LoginCount++; // 本地地址 olt.InternalUri = dic["ip"] + ""; olt.NetType = NetType; } base.SaveLogin(user); }
/// <summary>获取用户信息</summary> /// <param name="sso"></param> /// <param name="token"></param> /// <param name="user"></param> /// <returns></returns> public virtual Object GetUserInfo(OAuthServer sso, String token, IManageUser user) { if (user is User user2) { return new { userid = user.ID, username = user.Name, nickname = user.NickName, sex = user2.Sex, mail = user2.Mail, mobile = user2.Mobile, code = user2.Code, roleid = user2.RoleID, rolename = user2.RoleName, roleids = user2.RoleIds, rolenames = user2.Roles.Skip(1).Join(",", e => e + ""), departmentCode = user2.Department?.Code, departmentName = user2.Department?.Name, avatar = user2.Avatar, detail = user2.Remark, } } ; else { return new { userid = user.ID, username = user.Name, nickname = user.NickName, } }; }
/// <summary>登录或注册完成后,保存登录信息</summary> /// <param name="user"></param> protected override void SaveLogin(IManageUser user) { //var dv = Device; //if (dv != null) //{ // // 注册消息队列 // MQHost.Instance.Subscribe(dv.Name, dv.Name, "Device", async (sub, msg) => // { // }, Session); //} // 检查下发指令 TimerX.Delay(CheckCommand, 100); // 读取信息 TimerX.Delay(async s => { try { var rs = await Session.InvokeAsync <Object>("GetServer"); var dic = rs.ToDictionary(); WriteLog("Server={0}", dic["Server"]); } catch { } }, 1000); base.SaveLogin(user); }
void SaveStatistics(HttpContext ctx, IManageUser user, String ip, String page, String title) { var ts = DateTime.Now - ctx.Timestamp; // 访问统计 VisitStat.Add(page, title, (Int32)ts.TotalMilliseconds, user?.ID ?? 0, ip, GetError(ctx)?.Message); }
/// <summary>根据验证结果获取跳转回子系统的Url</summary> /// <param name="key"></param> /// <param name="user"></param> /// <returns></returns> public override String GetResult(Int32 key, IManageUser user) { var id = 0; var rs = true; var msg = ""; try { var url = base.GetResult(key, user); msg = $"key={key},user={user.ID}/{user},url={url}"; return(url); } catch (Exception ex) { rs = false; msg = ex.GetTrue()?.Message; throw; } finally { AppLog.Create(id, nameof(GetResult), rs, msg); } }
/// <summary>设置当前用户</summary> /// <param name="user"></param> /// <param name="context"></param> public override void SetCurrent(IManageUser user, IServiceProvider context = null) { var ss = ((context)?.GetService <IHttpContextAccessor>() ?? Context) ?.HttpContext.Session; if (ss == null) { return; } var key = SessionKey; // 特殊处理注销 if (user == null) { // 修改Session ss.Remove(key); // 下线功能暂时失效,通过接口取值报错 if (ss.Get <IAuthUser>(key) is IAuthUser au) { au.Online = false; au.Save(); } } else { // 修改Session ss.Set(key, user); } }
/// <summary>保存用户信息到Cookie</summary> /// <param name="provider">提供者</param> /// <param name="user">用户</param> /// <param name="expire">过期时间</param> /// <param name="context">Http上下文,兼容NetCore</param> public static void SaveCookie(this IManageProvider provider, IManageUser user, TimeSpan expire, HttpContext context) { var res = context?.Response; if (res == null) { return; } var key = "token"; if (user == null) { res.Cookies.Delete(key); } else { // 令牌有效期,默认2小时 var exp = DateTime.Now.Add(expire.TotalSeconds > 0 ? expire : TimeSpan.FromHours(2)); var jwt = GetJwt(); jwt.Subject = user.Name; jwt.Expire = exp; var token = jwt.Encode(null); var option = new CookieOptions(); if (expire.TotalSeconds > 0) { option.Expires = DateTimeOffset.Now.Add(expire); } res.Cookies.Append(key, token, option); } }
/// <summary>抓取远程头像</summary> /// <param name="user"></param> /// <param name="url"></param> /// <returns></returns> public virtual Boolean FetchAvatar(IManageUser user, String url = null) { if (url.IsNullOrEmpty()) { url = user.GetValue("Avatar") as String; } //if (av.IsNullOrEmpty()) throw new Exception("用户头像不存在 " + user); // 尝试从用户链接获取头像地址 if (url.IsNullOrEmpty() || !url.StartsWithIgnoreCase("http")) { var list = UserConnect.FindAllByUserID(user.ID); url = list.OrderByDescending(e => e.UpdateTime) .Where(e => !e.Avatar.IsNullOrEmpty() && e.Avatar.StartsWithIgnoreCase("http")) .FirstOrDefault()?.Avatar; } if (url.IsNullOrEmpty()) { return(false); } if (!url.StartsWithIgnoreCase("http")) { return(false); } // 不要扩展名 var set = Setting.Current; var dest = set.AvatarPath.CombinePath(user.ID + ".png").GetBasePath(); //// 头像是否已存在 //if (File.Exists(dest)) return false; LogProvider.Provider?.WriteLog(user.GetType(), "抓取头像", $"{url} => {dest}", user.ID, user + ""); dest.EnsureDirectory(true); try { //var wc = new WebClientX(); //Task.Factory.StartNew(() => wc.DownloadFileAsync(url, av)).Wait(5000); var client = new HttpClient(); var rs = client.GetAsync(url).Result; var buf = rs.Content.ReadAsByteArrayAsync().Result; File.WriteAllBytes(dest, buf); // 更新头像 user.SetValue("Avatar", "/Sso/Avatar/" + user.ID); (user as IEntity)?.Update(); return(true); } catch (Exception ex) { XTrace.WriteException(ex); } return(false); }
/// <summary>设置当前用户</summary> /// <param name="user"></param> /// <param name="context"></param> public override void SetCurrent(IManageUser user, IServiceProvider context = null) { if (context == null) { context = HttpContext.Current; } var ss = context.GetService <HttpSessionState>(); if (ss == null) { return; } var key = SessionKey; // 特殊处理注销 if (user == null) { ss.Remove(key); } else { ss[key] = user; } }
/// <summary>填充用户</summary> /// <param name="client"></param> /// <param name="user"></param> protected virtual void Fill(OAuthClient client, IManageUser user) { if (user.Name.IsNullOrEmpty()) { user.Name = client.UserName ?? client.OpenID; } if (user.NickName.IsNullOrEmpty()) { user.NickName = client.NickName; } var dic = client.Items; // 邮箱 if (dic != null && user is UserX user2) { if (user2.Mail.IsNullOrEmpty() && dic.TryGetValue("email", out var email)) { user2.Mail = email; } } // 头像 if (dic != null && user is IEntity entity) { if ((entity["Avatar"] + "").IsNullOrEmpty()) { entity.SetItem("Avatar", client.Avatar); } } }
/// <summary>登录或注册完成后,保存登录信息</summary> /// <param name="user"></param> protected virtual void SaveLogin(IManageUser user) { var u = user as IMyModel; u.Type = Type; u.Version = Version; if (u.NickName.IsNullOrEmpty()) { u.NickName = "{0}{1}".F(Agent, user.Name); } var olt = Online as IMyOnline; olt.LoginTime = DateTime.Now; olt.LoginCount++; // 本地地址 olt.InternalUri = InternalUri; olt.NetType = NetType; var ns = Session as NetSession; if (user is IAuthUser au) { au.SaveLogin(ns); } }
public Dictionary <string, object> Login(BaseUser model) { string Msg = ""; IPScanerHelper objScan = new IPScanerHelper(); string IPAddress = NetHelper.GetIPAddress(); objScan.IP = IPAddress; objScan.DataPath = System.Web.Hosting.HostingEnvironment.MapPath("~/Resource/IPScaner/QQWry.Dat"); string IPAddressName = objScan.IPLocation(); int msg = 0; BaseUser base_user = UserBll.UserLogin(model.Account, model.UserPassword, out msg); switch (msg) { case 0: Msg = "账号不存在"; SysLogBll.WriteLog(model.Account, OperationType.Login, LogSatus.fail, "账号不存在、IP所在城市" + IPAddressName); break; case 1: RoleBll RoleBll = new RoleBll(); Role role = RoleBll.GetModelByUserId(base_user.UserId); IManageUser mangeuser = new IManageUser(); mangeuser.UserId = base_user.UserId; mangeuser.Account = base_user.Account; mangeuser.IPAddress = IPAddress; mangeuser.IPAddressName = IPAddressName; if (role != null) { mangeuser.RoleName = role.RoleName; mangeuser.RoleId = role.RoleId; } else { mangeuser.RoleName = ""; mangeuser.RoleId = 0; } ManageProvider.Provider.AddCurrent(mangeuser); SysLogBll.WriteLog(model.Account, OperationType.Login, LogSatus.Success, "登陆成功、IP所在城市" + IPAddressName); break; case 2: Msg = "账户锁定"; SysLogBll.WriteLog(model.Account, OperationType.Login, LogSatus.fail, "账户锁定、IP所在城市" + IPAddressName); break; case 3: Msg = "密码错误"; SysLogBll.WriteLog(model.Account, OperationType.Login, LogSatus.fail, "密码错误、IP所在城市" + IPAddressName); break; } return(new Dictionary <string, object> { { "code", msg }, { "msg", Msg } }); }
/// <summary>根据验证结果获取跳转回子系统的Url</summary> /// <param name="key"></param> /// <param name="user"></param> /// <returns></returns> public virtual String GetResult(Int32 key, IManageUser user) { var k = "Model:" + key; var model = Cache.Get <Model>(k); if (model == null) { throw new ArgumentOutOfRangeException(nameof(key)); } Cache.Remove(k); //// 保存用户信息 //model.User = user; var prv = TokenProvider; if (prv == null) { prv = TokenProvider = new TokenProvider(); } if (prv.Key.IsNullOrEmpty()) { prv.ReadKey("..\\Keys\\OAuth.prvkey", true); } // 建立令牌 model.Token = prv.Encode(user.Name, DateTime.Now.AddSeconds(Expire)); // 随机code,并尝试加入缓存 var code = ""; do { code = Rand.NextString(16); }while (!Cache.Add("Code:" + code, model, 20 * 60)); if (Log != null) { WriteLog("{2} key={0} code={1}", key, code, model.AppID); } var url = model.Uri; if (url.Contains("?")) { url += "&"; } else { url += "?"; } url += "code=" + code; if (!model.State.IsNullOrEmpty()) { url += "&state=" + model.State; } return(url); }
/// <summary>检查委托代理</summary> /// <param name="user"></param> /// <returns></returns> public IManageUser CheckAgent(IManageUser user) { if (user == null) { return(user); } // 查找该用户是否有可用待立项,按照创建代理的先后顺序 var list = PrincipalAgent.GetAllValidByAgentId(user.ID); if (list.Count == 0) { return(user); } // 脏数据检查 foreach (var item in list) { // 没有次数或者已过期,则禁用 if (item.Enable && (item.Times == 0 || item.Expire.Year > 2000 && item.Expire < DateTime.Now)) { item.Enable = false; item.Update(); } } // 查找一个可用项 var pa = list.FirstOrDefault(e => e.Enable); if (pa == null || pa.Principal == null) { return(user); } var roles = pa.Principal?.Roles; if (roles != null && roles.Any(e => e.IsSystem)) { pa.Enable = false; pa.Remark = "安全起见,不得代理系统管理员"; pa.Update(); LogProvider.Provider.WriteLog("用户", "代理", false, $"安全起见,[{pa.AgentName}]不得代理系统管理员[{pa.PrincipalName}]的身份权限", pa.AgentId, pa.AgentName); return(user); } pa.Times--; if (pa.Times == 0) { pa.Enable = false; } pa.Update(); LogProvider.Provider.WriteLog("用户", "委托", true, $"委托[{pa.AgentName}]使用[{pa.PrincipalName}]的身份权限", pa.PrincipalId, pa.PrincipalName); LogProvider.Provider.WriteLog("用户", "代理", true, $"[{pa.AgentName}]代理使用[{pa.PrincipalName}]的身份权限", pa.AgentId, pa.AgentName); return(pa.Principal as IManageUser); }
/// <summary>填充用户,登录成功并获取用户信息之后</summary> /// <param name="client"></param> /// <param name="user"></param> protected virtual void Fill(OAuthClient client, IManageUser user) { client.Fill(user); var dic = client.Items; // 用户信息 if (dic != null && user is UserX user2) { if (user2.Mail.IsNullOrEmpty() && dic.TryGetValue("email", out var email)) { user2.Mail = email; } if (user2.Mail.IsNullOrEmpty() && dic.TryGetValue("mail", out email)) { user2.Mail = email; } if (user2.Mobile.IsNullOrEmpty() && dic.TryGetValue("mobile", out var mobile)) { user2.Mobile = mobile; } if (user2.Code.IsNullOrEmpty() && dic.TryGetValue("code", out var code)) { user2.Code = code; } if (user2.Sex == SexKinds.未知 && dic.TryGetValue("sex", out var sex)) { user2.Sex = (SexKinds)sex.ToInt(); } // 如果默认角色为0,则使用认证中心提供的角色 var set = Setting.Current; var rid = set.DefaultRole; //if (rid == 0 && dic.TryGetValue("roleid", out var roleid) && roleid.ToInt() > 0) user2.RoleID = roleid.ToInt(); if (rid <= 0) { // 0使用认证中心角色,-1强制使用 if (user2.RoleID <= 0 || rid < 0) { user2.RoleID = GetRole(dic, rid <= -1); user2.RoleIDs = GetRoles(client.Items, rid <= -1).Join(); } } // 头像 if (user2.Avatar.IsNullOrEmpty()) { user2.Avatar = client.Avatar; } // 下载远程头像到本地,Avatar还是保存远程头像地址 if (user2.Avatar.StartsWithIgnoreCase("http") && !set.AvatarPath.IsNullOrEmpty()) { FetchAvatar(user); } } }
void SaveBehavior(IManageUser user, String ip, String page, String msg, Boolean success) { if (page.IsNullOrEmpty()) { return; } LogProvider.Provider?.WriteLog("访问", "记录", success, msg, user?.ID ?? 0, user + "", ip); }
/// <summary>比较密码MD5</summary> /// <param name="user"></param> /// <param name="pass"></param> /// <returns></returns> public static Boolean CheckMD5(this IManageUser user, String pass) { // 验证密码 if (user.Password != pass.MD5()) { throw new Exception(user + " 密码错误"); } return(true); }
protected override void OnPreLoad(EventArgs e) { base.OnPreLoad(e); IManageUser user = ManageProvider.Provider.Current; if (user == null) { Response.Redirect("../Login.aspx"); } ICommonManageProvider provider = CommonManageProvider.Provider; IMenu root = null; if (provider != null) { root = provider.MenuRoot; } IAdministrator admin = user as IAdministrator; if (Request["act"] == "logout") { admin.Logout(); HmTrace.WriteWarn("我来了这里5555"); if (string.IsNullOrEmpty(Request["tohome"])) { // 再跳一次,除去Url中的尾巴 if (!String.IsNullOrEmpty(Request.Url.Query)) { Response.Redirect("Default.aspx"); } return; } else { Response.Redirect("~/"); return; } } if (root != null) { root.CheckMenuName("Admin", "管理平台") .CheckMenuName(@"Admin\Sys", "系统管理") .CheckMenuName(@"Admin\Advance", "高级设置"); IMenu menu = root.FindByPath(@"Admin"); if (menu != null && String.Equals(menu.Url, "../Admin/Default.aspx", StringComparison.OrdinalIgnoreCase)) { menu.Url = "../Admin/Main.aspx"; menu.Save(); } } }
/// <summary>登录或注册完成后,保存登录信息</summary> /// <param name="user"></param> /// <param name="ps">附加参数</param> protected virtual Object SaveLogin(IManageUser user, IDictionary <String, Object> ps) { var ns = Session as NetSession; if (user is IAuthUser au) { au.SaveLogin(ns); } return(new { Name = user + "" }); }
/// <summary>抓取远程头像</summary> /// <param name="user"></param> /// <returns></returns> public virtual Boolean FetchAvatar(IManageUser user) { var av = user.GetValue("Avatar") as String; if (av.IsNullOrEmpty()) { throw new Exception("用户头像不存在 " + user); } var url = av; if (!url.StartsWithIgnoreCase("http")) { return(false); } // 不要扩展名 var set = Setting.Current; av = set.AvatarPath.CombinePath(user.ID + ".png").GetFullPath(); // 头像是否已存在 if (File.Exists(av)) { return(false); } av.EnsureDirectory(true); try { //var wc = new WebClientX(); //Task.Factory.StartNew(() => wc.DownloadFileAsync(url, av)).Wait(5000); var client = new HttpClient(); var rs = client.GetAsync(url).Result; var buf = rs.Content.ReadAsByteArrayAsync().Result; File.WriteAllBytes(av, buf); // 更新头像 user.SetValue("Avatar", "/Sso/Avatar/" + user.ID); return(true); } catch (Exception ex) { XTrace.WriteException(ex); } return(false); }
public Dictionary <string, object> Login(string Account, string UserPassword) { string Msg = ""; int msg = 0; BaseUser base_user = UserLogin(Account, UserPassword, out msg); switch (msg) { case 0: Msg = "账号不存在"; break; case 1: RoleBll RoleBll = new RoleBll(); Role role = RoleBll.GetModelByUserId(base_user.UserId); IManageUser mangeuser = new IManageUser(); mangeuser.UserId = base_user.UserId; mangeuser.Account = base_user.Account; if (role != null) { mangeuser.RoleName = role.RoleName; mangeuser.RoleId = role.RoleId; } else { mangeuser.RoleName = ""; mangeuser.RoleId = 0; } ManageProvider.Provider.AddCurrent(mangeuser, "LoginModel"); break; case 2: Msg = "账户锁定"; break; case 3: Msg = "密码错误"; break; } return(new Dictionary <string, object> { { "code", msg }, { "msg", Msg } }); }
/// <summary>填充用户,登录成功并获取用户信息之后</summary> /// <param name="user"></param> public virtual void Fill(IManageUser user) { if (user.Name.IsNullOrEmpty()) { user.Name = UserName ?? OpenID; } if (user.NickName.IsNullOrEmpty()) { user.NickName = NickName; } //// 头像 //if (!Avatar.IsNullOrEmpty()) user.SetValue(nameof(Avatar), Avatar); }
/// <summary>根据验证结果获取跳转回子系统的Url</summary> /// <param name="key"></param> /// <param name="user"></param> /// <returns></returns> public virtual String GetResult(Int32 key, IManageUser user) { var k = "Model:" + key; var model = Cache.Get <Model>(k); if (model == null) { throw new ArgumentOutOfRangeException(nameof(key), "操作超时,请重试!"); } Cache.Remove(k); var prv = GetProvider(); // 建立令牌 model.Token = prv.Encode(user.Name, DateTime.Now.AddSeconds(Expire)); model.User = user; // 随机code,并尝试加入缓存 var code = ""; do { code = Rand.NextString(16); }while (!Cache.Add("Code:" + code, model, 20 * 60)); if (Log != null) { WriteLog("Authorize appid={0} code={2} redirect_uri={1} {3}", model.AppID, model.Uri, code, user); } var url = model.Uri; if (url.Contains("?")) { url += "&"; } else { url += "?"; } url += "code=" + code; if (!model.State.IsNullOrEmpty()) { url += "&state=" + model.State; } return(url); }
protected void Page_Load(object sender, EventArgs e) { this.Title = SysConfig.Current.DisplayName; if (!IsPostBack) { IManageUser user = Provider.Current; if (user != null) { if (String.Equals("logout", Request["action"], StringComparison.OrdinalIgnoreCase)) { IAdministrator admin = user as IAdministrator; if (admin == null) { admin.Logout(); } } else { Response.Redirect("Default.aspx"); } } else { // 单一用户自动填写密码 IEntityOperate eop = EntityFactory.CreateOperate(Provider.ManageUserType); if (eop.Count == 1) { user = eop.FindAll(null, null, null, 0, 1)[0] as IManageUser; if (user != null) { // 使用admin或者用户名做密码,认为是默认密码,默认填写 if (user.Password == DataHelper.Hash("admin")) { UserName.Text = user.Account; //Password.Text = "admin"; SetPass("admin"); } else if (user.Password == DataHelper.Hash(user.Account)) { UserName.Text = user.Account; //Password.Text = user.Account; SetPass(user.Account); } } } } } }
void SaveBehavior(IManageUser user, String ip, String page, String msg) { if (page.IsNullOrEmpty()) { return; } // 过滤后缀 var ext = Path.GetExtension(page); if (!ext.IsNullOrEmpty() && ExcludeSuffixes.Contains(ext)) { return; } LogProvider.Provider?.WriteLog("访问", "记录", msg, user?.ID ?? 0, user + "", ip); }
/// <summary> /// 写入登录信息 /// </summary> /// <param name="user">成员信息</param> public virtual void AddCurrent(IManageUser user) { try { if (LoginProvider == "Cookie") { CookieHelper.WriteCookie(LoginUserKey, DESEncrypt.Encrypt(JsonConvert.SerializeObject(user)), 1440); } else { SessionHelper.Add(LoginUserKey, DESEncrypt.Encrypt(JsonConvert.SerializeObject(user))); } } catch (Exception ex) { throw new Exception(ex.Message); } }
/// <summary> /// 当前用户 /// </summary> /// <returns></returns> public virtual IManageUser Current() { try { IManageUser user = new IManageUser(); if (LoginProvider == "Cookie") { user = JsonConvert.DeserializeObject<IManageUser>(DESEncrypt.Decrypt(CookieHelper.GetCookie(LoginUserKey))); } else { user = JsonConvert.DeserializeObject<IManageUser>(DESEncrypt.Decrypt(SessionHelper.Get(LoginUserKey).ToString())); } if (user == null) { throw new Exception("登录信息超时,请重新登录。"); } return user; } catch { throw new Exception("登录信息超时,请重新登录。"); } }
/// <summary> /// 登录验证 /// </summary> /// <param name="Account">账户</param> /// <param name="Password">密码</param> /// <returns></returns> public ActionResult CheckLogin(string Account, string Password, string Token) { string Msg = ""; try { IPScanerHelper objScan = new IPScanerHelper(); string IPAddress = NetHelper.GetIPAddress(); objScan.IP = IPAddress; objScan.DataPath = Server.MapPath("~/Resource/IPScaner/QQWry.Dat"); string IPAddressName = objScan.IPLocation(); string outmsg = ""; VerifyIPAddress(Account, IPAddress, IPAddressName, Token); //系统管理 if (Account == ConfigHelper.AppSettings("CurrentUserName")) { if (ConfigHelper.AppSettings("CurrentPassword") == Password) { IManageUser imanageuser = new IManageUser(); imanageuser.UserId = "System"; imanageuser.Account = "System"; imanageuser.UserName = "******"; imanageuser.Gender = "男"; imanageuser.Code = "System"; imanageuser.LogTime = DateTime.Now; imanageuser.CompanyId = "系统"; imanageuser.DepartmentId = "系统"; imanageuser.IPAddress = IPAddress; imanageuser.IPAddressName = IPAddressName; imanageuser.IsSystem = true; ManageProvider.Provider.AddCurrent(imanageuser); //对在线人数全局变量进行加1处理 HttpContext rq = System.Web.HttpContext.Current; rq.Application["OnLineCount"] = (int)rq.Application["OnLineCount"] + 1; Msg = "3";//验证成功 Base_SysLogBll.Instance.WriteLog(Account, OperationType.Login, "1", "登陆成功、IP所在城市:" + IPAddressName); } else { return Content("4"); } } else { Base_User base_user = base_userbll.UserLogin(Account, Password, out outmsg); switch (outmsg) { case "-1": //账户不存在 Msg = "-1"; Base_SysLogBll.Instance.WriteLog(Account, OperationType.Login, "-1", "账户不存在、IP所在城市:" + IPAddressName); break; case "lock": //账户锁定 Msg = "2"; Base_SysLogBll.Instance.WriteLog(Account, OperationType.Login, "-1", "账户锁定、IP所在城市:" + IPAddressName); break; case "error": //密码错误 Msg = "4"; Base_SysLogBll.Instance.WriteLog(Account, OperationType.Login, "-1", "密码错误、IP所在城市:" + IPAddressName); break; case "succeed": //验证成功 IManageUser imanageuser = new IManageUser(); imanageuser.UserId = base_user.UserId; imanageuser.Account = base_user.Account; imanageuser.UserName = base_user.RealName; imanageuser.Gender = base_user.Gender; imanageuser.Password = base_user.Password; imanageuser.Code = base_user.Code; imanageuser.Secretkey = base_user.Secretkey; imanageuser.LogTime = DateTime.Now; imanageuser.CompanyId = base_user.CompanyId; imanageuser.DepartmentId = base_user.DepartmentId; imanageuser.ObjectId = base_objectuserrelationbll.GetObjectId(imanageuser.UserId); imanageuser.IPAddress = IPAddress; imanageuser.IPAddressName = IPAddressName; imanageuser.IsSystem = false; ManageProvider.Provider.AddCurrent(imanageuser); //对在线人数全局变量进行加1处理 HttpContext rq = System.Web.HttpContext.Current; rq.Application["OnLineCount"] = (int)rq.Application["OnLineCount"] + 1; Msg = "3";//验证成功 Base_SysLogBll.Instance.WriteLog(Account, OperationType.Login, "1", "登陆成功、IP所在城市:" + IPAddressName); break; default: break; } } } catch (Exception ex) { Msg = ex.Message; } return Content(Msg); }