Exemple #1
0
        public async Task<Response> ChangeMachineKey(string account, MachineKey machineKey)
        {
            var user = GetUser(account);

            if (user == null)
            {
                return new Response { ErrorMessage = UserNotExists };
            }

            if (machineKey?.IsValid() != true)
            {
                return new Response { ErrorMessage = "计算机密钥信息必须要有符合要求(验证密钥长128,加密密钥长48)!" };
            }

            try
            {
                var webConfigPath = HttpContext.Current.Server.MapPath("~/web.config");

                await Task.Run(() =>
                {
                    var xdoc = XDocument.Load(webConfigPath);
                    var machineKeyElement = xdoc.XPathSelectElement("//system.web/machineKey");

                    machineKeyElement.Attribute("validationKey").SetValue(machineKey.ValidationKey);
                    machineKeyElement.Attribute("decryptionKey").SetValue(machineKey.DecryptionKey);

                    xdoc.Save(webConfigPath, SaveOptions.None);
                });
            }
            catch (Exception exception)
            {
                return new Response { ErrorMessage = exception.Message };
            }

            return new Response();
        }
        /// <summary>
        /// 修改机器密钥。
        /// </summary>
        /// <param name="account">用户账号</param>
        /// <param name="machineKey">计算机密钥</param>
        /// <returns>修改后结果提示</returns>
        public Response ChangeMachineKey(string account, MachineKey machineKey)
        {
            var url = string.Format(ChangeMachineKeyUrl, account);

            this.Cache?.Remove(TokenCacheKey);

            return this.Post<Response>(url, machineKey);
        }