zoukankan      html  css  js  c++  java
  • 系统所有用户缓存数据(仅含帐号和密码信息)

    using System.Data;
    using CSFrameworkV4_5.Common;
    using CSFrameworkV4_5.Models;
    using CSFrameworkV4_5.Server.DataAccess.DAL_Permission;
    
    namespace CSFrameworkV4_5.WCFContract
    {
        /// <summary>
        /// 系统所有用户缓存数据(仅含帐号和密码信息),用于客户端调用WCF接口时检测用户名和密码,有效避免频繁访问数据库。
        /// </summary>
        public static class ActivityUserCache
        {
            private static DataTable _AllUser = null;
    
            /// <summary>
            /// 所有缓存的用户
            /// </summary>
            public static DataTable AllUser
            {
                get
                {
                    if (_AllUser == null) ActivityUserCache.RefreshUserCache();
                    return _AllUser;
                }
            }
    
            /// <summary>
            /// 刷新缓存数据,重新加载所有用户数据。
            /// </summary>
            public static void RefreshUserCache()
            {
                _AllUser = dalUser.GetUserList4Cache();
            }
    
            /// <summary>
            /// 同步用户缓存数据
            /// </summary>
            /// <param name="newUserData">最新修改的用户数据</param>
            public static void SyncUserCache(DataTable newUserData)
            {
                if (newUserData.Rows.Count <= 0) return;
                DataRow R = newUserData.Rows[0];
                if (R.RowState != DataRowState.Deleted)
                {
                    string account = ConvertEx.ToString(R[tb_MyUser.Account]);
                    string password = ConvertEx.ToString(R[tb_MyUser.Password]);
                    if (R.RowState == DataRowState.Added) SyncAddUserCache(account, password);
                    if (R.RowState == DataRowState.Modified) SyncUpdateUserCache(account, password);
                }
            }
    
            /// <summary>
            /// 同步用户密码
            /// </summary>
            /// <param name="account">帐号</param>
            /// <param name="pwd">新密码</param>
            public static void SyncUpdateUserCache(string account, string pwd)
            {
                if (_AllUser == null) return;
                DataRow[] rs = _AllUser.Select("Account='" + account + "'");
                if (rs.Length > 0)
                {
                    lock (_AllUser)
                    {
                        rs[0][tb_MyUser.Password] = pwd;
                        _AllUser.AcceptChanges();
                    }
                }
            }
    
            /// <summary>
            /// 删除指定缓存用户
            /// </summary>
            /// <param name="account"></param>
            public static void SyncRemoveUserCache(string account)
            {
                if (_AllUser == null) return;
    
                lock (_AllUser)
                {
                    DataRow[] rs = _AllUser.Select("Account='" + account + "'");
                    if (rs.Length > 0) _AllUser.Rows.Remove(rs[0]);
                }
            }
    
            /// <summary>
            /// 系统增新用户,添加到缓存表
            /// </summary>
            /// <param name="account"></param>
            /// <param name="encodedPwd"></param>
            public static void SyncAddUserCache(string account, string encodedPwd)
            {
                if (_AllUser == null) return;
    
                lock (_AllUser)
                {
                    DataRow R = _AllUser.Rows.Add();
                    R[tb_MyUser.Account] = account;
                    R[tb_MyUser.Password] = encodedPwd;
                    _AllUser.AcceptChanges();
                }
            }
    
            //基于性能优化,定义成员变量
            private static DataRow[] _CurrentValidateUser = null;
            private static string filter = "Account='{0}' AND Password='{1}'";
    
            /// <summary>
            /// 检查用户名及密码是否正确
            /// </summary>
            /// <param name="account">登录帐号</param>
            /// <param name="encodedPwd">加密后的密码</param>
            /// <returns></returns>
            public static bool ValidateUser(string account, string encodedPwd)
            {
                _CurrentValidateUser = ActivityUserCache.AllUser.Select(string.Format(filter, account, encodedPwd));
                return _CurrentValidateUser.Length > 0;
            }
    
        }
    }
  • 相关阅读:
    电脑发朋友圈神器?不是严格意义上的
    微信公众平台投票功能升级 可多渠道发布投票
    多客服功能终于也向所有微信认证的订阅号开放了
    微信电脑版-微信for windows客户端发布
    微信朋友圈广告的赢家是他们
    微信公众平台原创声明功能公测 自媒体原创保护的福音
    微信公众平台数据接口正式对所有认证公众号开放
    壕,微信6.1版发微信红包更方便了,我们去喝杯茶吧
    微信公开课发布微信官方教程:教你用好微信JS-SDK接口
    微信公众平台开放JS-SDK(微信内网页开发工具包)
  • 原文地址:https://www.cnblogs.com/Jeely/p/11350285.html
Copyright © 2011-2022 走看看