博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【WinForm】操作web.config验证用户
阅读量:6708 次
发布时间:2019-06-25

本文共 5038 字,大约阅读时间需要 16 分钟。

最近两天在做操作web.config 的winform工具,做起来不是很顺。

先说一下需求,就是通过web。config 来判断用户时候有权限登录。
然后呢,通过winform 小工具来操作(增删改)webconfig里面的用户

第一:设置web.config 能够用来判断用户是否能登录

   在system.web 的节点下 添加如下节点,用于权限验证。

        Login.cs---------------->

View Code
protected void btnLogin_Click(object sender, EventArgs e)    {        string name = txtUserName.Text.Trim();        string pwd = txtPwd.Text.Trim();        string filePath = Server.MapPath("web.config");        //加载XML        XmlDocument xmlDoc = new XmlDocument();        xmlDoc.Load(filePath);        //定义命名空间        XmlNode root = xmlDoc.DocumentElement;        XmlNamespaceManager xnsmgr = new XmlNamespaceManager(xmlDoc.NameTable);        xnsmgr.AddNamespace("ns", "http://schemas.microsoft.com/.NetConfiguration/v2.0");        //查询节点               XmlNodeList xmlList = root.SelectNodes("/ns:configuration/ns:system.web/ns:authentication/ns:forms/ns:credentials", xnsmgr)[0].ChildNodes;        bool Flag = false;        for (int i = 0; i < xmlList.Count; i++)        {            if (xmlList[i].Attributes["name"].Value == name && xmlList[i].Attributes["password"].Value == pwd)            {                Flag = true;                //跳转                Response.Redirect("~/Default.aspx");            }        }        if (!Flag)        {            MsgBox("登录失败");        }}

 

  第二 小工具实现用户的增删改

           界面如下:

         

   主要代码实现如下:

     Add -------> 向<credentials>节点下添加子节点<user>

View Code
string user = txtName.Text;            string pwd = txtPwd.Text;            //加载XML            XmlDocument doc = new XmlDocument();            doc.Load(filePath);            XmlNode root = doc.DocumentElement;            XmlNamespaceManager xnsm = new XmlNamespaceManager(doc.NameTable);            xnsm.AddNamespace("ns", "http://schemas.microsoft.com/.NetConfiguration/v2.0");            //添加前检查是否重复            XmlNodeList xmlList = root.SelectNodes("/ns:configuration/ns:system.web/ns:authentication/ns:forms/ns:credentials", xnsm)[0].ChildNodes;             for (int i = 0; i < xmlList.Count; i++)             {                 if (xmlList[i].Attributes["name"].Value == user)                 {                     MessageBox.Show("已经存在相同的用户名,请更换!");                     return;                 }             }            //查询到所需结果的父节点            XmlNode nodeP = root.SelectNodes("/ns:configuration/ns:system.web/ns:authentication/ns:forms/ns:credentials", xnsm)[0];                        XmlElement xmlem = doc.CreateElement("user");            XmlAttribute nodeAttribute = doc.CreateAttribute("name");//创建属性            XmlAttribute nodeAttribute2 = doc.CreateAttribute("password");            xmlem.Attributes.Append(nodeAttribute);//把属相添加到节点中            xmlem.Attributes.Append(nodeAttribute2);            xmlem.SetAttribute("name", user);//属相名和值对应             xmlem.SetAttribute("password", pwd);            nodeP.AppendChild(xmlem);//子节点添加到父节点中            doc.Save(filePath);            BindData();            MessageBox.Show("添加成功");            txtName.Text = "";            txtPwd.Text = "";

     Del--------> 删除选中行(dataGridView)

View Code
int row = this.dataGridView1.CurrentCell.RowIndex;            string name = dataGridView1.Rows[row].Cells["UserName"].Value.ToString();            string pwd = dataGridView1.Rows[row].Cells["PassWord"].Value.ToString();            if (dataGridView1.CurrentRow != null)            {                if (MessageBox.Show("确定要删除该行数据吗?", "提示信息", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)                {                    try                    {                        xmlDoc = new XmlDocument();                        xmlDoc.Load(filePath);                        XmlNode root = xmlDoc.DocumentElement;                        XmlNamespaceManager xnsmgr = new XmlNamespaceManager(xmlDoc.NameTable);                        xnsmgr.AddNamespace("ns", "http://schemas.microsoft.com/.NetConfiguration/v2.0");                        XmlNodeList xmlList = root.SelectNodes("/ns:configuration/ns:system.web/ns:authentication/ns:forms/ns:credentials", xnsmgr)[0].ChildNodes;                        for (int i = 0; i < xmlList.Count; i++)                        {                            if (xmlList[i].Attributes["name"].Value == name && xmlList[i].Attributes["password"].Value == pwd)                            {                                //删除                                xmlList[i].ParentNode.RemoveChild(xmlList[i]);                                xmlDoc.Save(filePath);                                MessageBox.Show("删除成功!");                                break;                            }                        }                        BindData();                    }                    catch (Exception ex)                    { MessageBox.Show(ex.Message); }                }            }

    Update----->目前没做,先用 删除后在添加 做法来实现

以上,就是我这两天的做法的实现和一些总结,希望能对看到的人有所帮助,同时也是自己的一次笔记! Write By -

转载于:https://www.cnblogs.com/ruicky/archive/2012/10/12/2721267.html

你可能感兴趣的文章
你应该知道的人工智能三大分类
查看>>
《Unity 游戏案例开发大全》一6.2 游戏的策划及准备工作
查看>>
《JavaScript设计模式》——9.2 Module(模块)模式
查看>>
《企业大数据系统构建实战:技术、架构、实施与应用》一第3章 企业大数据解决方案3.1 企业大数据解决方案实现方式...
查看>>
Linux下的七个类Dropbox同步工具推荐
查看>>
非ROOT实现静默安装的一些思考与体会,AIDL获取IPackageManager,反射ServiceManager,系统签名...
查看>>
如何快速搭建钉钉微应用?
查看>>
《C语言及程序设计》实践参考——翻转数组
查看>>
Android 仿百合网超火爆社交app首页滑动效果
查看>>
Sublime Text 3 全程详细图文
查看>>
小心FOR IN遍历数组
查看>>
移动Web开发的bug及解决方案
查看>>
RabbitMQ(二) -- Work Queues
查看>>
Linux软件安装常用方法(转载)
查看>>
Java程序内存分析Java VisualVM(Visual GC)
查看>>
高性能JavaScript--数据存储(简要学习笔记二)
查看>>
重学javascript基础-typeof
查看>>
CSS—盒子模型理解
查看>>
c站(clicli.us)3.0 重构经验分享
查看>>
APP内弹窗管理方案
查看>>