コード例 #1
0
        /// <summary>
        /// 按用户名登录(LDAP专用)
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="userName">用户名</param>
        /// <param name="statusCode">返回状态码</param>
        /// <param name="statusMessage">返回状消息</param>
        /// <returns>用户实体</returns>
        public BaseUserInfo LogOnByUserName(BaseUserInfo userInfo, string userName, out string statusCode, out string statusMessage)
        {
            var parameter = ServiceParameter.CreateWithLog(userInfo
                                                           , MethodBase.GetCurrentMethod());
            BaseUserInfo returnUserInfo = null;
            string       returnCode     = string.Empty;
            string       returnMessage  = string.Empty;

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                // 先侦测是否在线
                userLogOnManager.CheckOnLine();
                // 然后获取用户密码
                var userManager = new BaseUserManager(userInfo);
                // 是否从角色判断管理员
                userManager.CheckIsAdministrator    = true;
                BaseUserEntity userEntity           = userManager.GetByUserName(userName);
                BaseUserLogOnEntity userLogOnEntity = userLogOnManager.GetObject(userEntity.Id);
                string password = userLogOnEntity.UserPassword;
                // 再进行登录
                returnUserInfo = userManager.LogOnByUserName(userName, password, null, false, userInfo.IPAddress, userInfo.MACAddress, false);
                returnCode     = userManager.StatusCode;
                returnMessage  = userManager.GetStateMessage();
                // 登录时会自动记录进行日志记录,所以不需要进行重复日志记录
                // BaseLogManager.Instance.Add(userInfo, this.serviceName, MethodBase.GetCurrentMethod());
            });
            statusCode    = returnCode;
            statusMessage = returnMessage;
            return(returnUserInfo);
        }
コード例 #2
0
        /// <summary>
        /// 按用户名登录(LDAP专用)
        /// </summary>
        /// <param name="taskId">任务标识</param>
        /// <param name="systemCode">子系统编码</param>
        /// <param name="userInfo">用户</param>
        /// <param name="userName">用户名</param>
        /// <returns>用户实体</returns>
        public UserLogonResult LogonByUserName(string taskId, string systemCode, BaseUserInfo userInfo, string userName)
        {
            var result = new UserLogonResult();

            var parameter = ServiceInfo.Create(taskId, userInfo, MethodBase.GetCurrentMethod());

            ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) =>
            {
                // 先侦测是否在线
                //userLogonManager.CheckOnline();
                // 然后获取用户密码
                var userManager = new BaseUserManager(userInfo);
                // 是否从角色判断管理员
                userManager.CheckIsAdministrator = true;
                //根据用户名获取用户信息
                var userEntity = userManager.GetByUserName(userName);


                if (userEntity != null)
                {
                    var baseUserLogonManager = new BaseUserLogonManager(userInfo);
                    //获取密码
                    var userLogonEntity = baseUserLogonManager.GetEntityByUserId(userEntity.Id);
                    var password        = userLogonEntity.UserPassword;
                    //再进行登录,这里密码不能是AD的密码,所以不检验密码
                    result = userManager.LogonByUserName(userName, password, systemCode, null, null, null, false, false);
                    //可以登录,但不建议,没有登录日志等
                    //result = userManager.LogonByOpenId(openId, string.Empty, string.Empty);
                }
                // 登录时会自动记录进行日志记录,所以不需要进行重复日志记录
                //BaseLogManager.Instance.Add(userInfo, this.serviceName, MethodBase.GetCurrentMethod());
            });
            return(result);
        }