示例#1
0
        /// <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;
            }
        }
示例#3
0
    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");
                }
            }
        }
    }
示例#4
0
        /// <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);
            }
        }
示例#5
0
        /// <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;
            }
        }
示例#6
0
        /// <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);
        }
示例#7
0
 /// <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,
                }
     };
 }
示例#8
0
        /// <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);
        }
示例#9
0
        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);
        }
示例#10
0
        /// <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);
            }
        }
示例#11
0
        /// <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);
            }
        }
示例#12
0
        /// <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);
            }
        }
示例#13
0
        /// <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);
        }
示例#14
0
        /// <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;
            }
        }
示例#15
0
        /// <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);
                }
            }
        }
示例#16
0
        /// <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 }
            });
        }
示例#18
0
        /// <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);
        }
示例#20
0
        /// <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);
                }
            }
        }
示例#21
0
        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);
        }
示例#22
0
        /// <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);
        }
示例#23
0
    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();
            }
        }
    }
示例#24
0
        /// <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 + "" });
        }
示例#25
0
        /// <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);
        }
示例#26
0
        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 }
            });
        }
示例#27
0
        /// <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);
        }
示例#28
0
        /// <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);
        }
示例#29
0
    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);
                        }
                    }
                }
            }
        }
    }
示例#30
0
        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);
        }
示例#31
0
 /// <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);
     }
 }
示例#32
0
 /// <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("登录信息超时,请重新登录。");
     }
 }
示例#33
0
 /// <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);
 }