标题:利用ASP.NET框架制作“模拟基于角色”的安全登陆
取消只看楼主
ilovetea
Rank: 1
来 自:辽宁省锦州市
等 级:新手上路
帖 子:177
专家分:4
注 册:2008-3-31
结帖率:100%
 问题点数:0 回复次数:7 
利用ASP.NET框架制作“模拟基于角色”的安全登陆
利用框架制作“模拟基于角色”的安全登陆

我混在这里很长时间,没发表过什么,今天有时间,我也发点见解,可能对新手有用。

注意:我的许多想法是基于”铲铲版主发表的利用框架制作“模拟基于角色”的安全登陆“文章后的一些想法

看到许多人在这个问题里打转,前些日子我也有疑问,经过这几天的研究发现点问题,可能对新手有用,那就是我们可以用基于用户的安全登陆来模拟出基于角色的安全管理登陆,有偷工减料的嫌疑,但我觉得还是很好用的。高手就别看了,呵呵,不要扔砖头啊

正式开始:我用的是VS2005,数据库是SQL2005

首先建立一个用户的数据库A:"表A"

表A中有3列:用户名,密码,角色

数据先写2个吧:admin 123 管理员

                          user    123 普通用户

由于主要想写的是用户管理部分,所以数据库连接部分省略掉,大家自己也会,我就不废话了。

想实现的功能是:文件夹admin只允许管理员访问,文件夹user只允许普通用户使用

文件:



在根目录的WEB.CONFIG中写入:


意思是:启用Forms验证模式


在default.aspx中:


在default.aspx.cs中写入代码:

    protected void Button1_Click1(object sender, EventArgs e)
    {
        SqlConnection con = DB.GetCon();
        con.Open();
        string uname = this.TextBox1.Text;
        string upws = this.TextBox2.Text;
        string ujs = this.DropDownList1.SelectedValue.ToString();
        SqlCommand cmd = new SqlCommand("select userJs from admin_gl where userName='"+uname+"' and userPws='"+upws+"' and userJs='"+ujs+"'", con);
        string js = Convert.ToString(cmd.ExecuteScalar());
//验证用户是否存在并输出查询结果
        con.Close();
        if (js=="管理员")
        {
            System.Web.Security.FormsAuthentication.SetAuthCookie(js, false);
            Response.Redirect("~/admin/index.aspx");
        }
        else if (js=="普通用户")
        {
            System.Web.Security.FormsAuthentication.SetAuthCookie(js, false);
//*当确认用户验证是合法的,则调用System.Web.Security.FormsAuthentication.SetAuthCookie(userid, false)方法,发送验证Cookie,此方法传递两个参数,一个是代表用户的标示,一般来说,在接下来确认用户唯一身份的就是从数据库中获得的userid。第二个参数告诉.NET是否写入持续的Cookie,如果为true,则Cookie将被持续,下次用户再次访问时,Cookie仍存在(相当于记住用户,可以提供这样的复选框让用户来决定是否持续Cookie)。发送了Cookie后,即可调用跳转语句跳转到指定地方。*//

            Response.Redirect("~/user/index.aspx");                  
        }
        else
        {
            this.Label1.Text = "用户名或密码错误请重新输入";
            this.TextBox1.Text = "";
            this.TextBox2.Text = "";
        }
        
    }

这段代码中关键的地方在于蓝色字体部分,也是实现模拟角色管理的重要步骤

这里需要说的的,我查询的不是用户名,而是数据库里的角色列,但不是真正的角色,而是把这列当成用户名处理。也就是说,在系统里,表里的角色列就等同于用户名。

在需要验证的文件夹里建立一个web.config文件。并写入:

    <system.web>
      <authorization>
        <allow users="管理员" />  //允许管理员访问
        <deny users="*" />        //不允许其他所有用户包括匿名用户都不能访问
      </authorization>
    </system.web>

意思是这个文件夹,只允许“管理员”使用,其他用户无法读写,

这么做的意义在哪呢?意义在于你以后可以随时建立管理员或者普通用户,不需要修改代码,而原始的用户验证需要修改代码,而真正的角色管理还需要进行其他设置,而实际上,这么用已经能够满足我们一般系统的管理使用了。

希望能给大家带来启发,呵呵,别扔砖头啊,哈哈

就到这里吧,休息休息一会儿

[[it] 本帖最后由 ilovetea 于 2008-11-24 21:55 编辑 [/it]]

1111111111.jpg (16.47 KB)
收到的鲜花
  • 小仙2008-11-24 20:53 送鲜花  49朵  
搜索更多相关主题的帖子: 模拟基于角色 NET ASP 框架 登陆 
2008-11-24 14:42
ilovetea
Rank: 1
来 自:辽宁省锦州市
等 级:新手上路
帖 子:177
专家分:4
注 册:2008-3-31
得分:0 
~/表示虚拟目录的根目录,
其他2点是由于发帖经验不足,呵呵
我这就去改改

我是爱喝茶的胖子,有空一起喝茶啊
我的百度博客:http://hi.baidu.com/33806380
2008-11-24 21:48
ilovetea
Rank: 1
来 自:辽宁省锦州市
等 级:新手上路
帖 子:177
专家分:4
注 册:2008-3-31
得分:0 
看的人不少,回帖的人少

我是爱喝茶的胖子,有空一起喝茶啊
我的百度博客:http://hi.baidu.com/33806380
2008-11-25 11:02
ilovetea
Rank: 1
来 自:辽宁省锦州市
等 级:新手上路
帖 子:177
专家分:4
注 册:2008-3-31
得分:0 
~/表示虚拟目录的根目录
\\没用过,不清楚啊

我是爱喝茶的胖子,有空一起喝茶啊
我的百度博客:http://hi.baidu.com/33806380
2008-11-25 13:31
ilovetea
Rank: 1
来 自:辽宁省锦州市
等 级:新手上路
帖 子:177
专家分:4
注 册:2008-3-31
得分:0 
版主就是版主,厉害

我是爱喝茶的胖子,有空一起喝茶啊
我的百度博客:http://hi.baidu.com/33806380
2008-11-25 19:25
ilovetea
Rank: 1
来 自:辽宁省锦州市
等 级:新手上路
帖 子:177
专家分:4
注 册:2008-3-31
得分:0 
铲铲版主说到点子上了,的确有这样的问题存在,

不过既然想偷工减料,就得付出代价了,我也很无奈。

有个问题请教铲铲版主:

你说用“户名登陆验证”和“角色登陆验证”在安全方面有什么区别吗?

那个更安全些?

我是爱喝茶的胖子,有空一起喝茶啊
我的百度博客:http://hi.baidu.com/33806380
2008-11-26 13:56
ilovetea
Rank: 1
来 自:辽宁省锦州市
等 级:新手上路
帖 子:177
专家分:4
注 册:2008-3-31
得分:0 
谢谢,学到点东西

我是爱喝茶的胖子,有空一起喝茶啊
我的百度博客:http://hi.baidu.com/33806380
2008-11-27 11:34
ilovetea
Rank: 1
来 自:辽宁省锦州市
等 级:新手上路
帖 子:177
专家分:4
注 册:2008-3-31
得分:0 
谢谢CHANCHAN版主的解释

我是爱喝茶的胖子,有空一起喝茶啊
我的百度博客:http://hi.baidu.com/33806380
2008-11-29 20:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-245997-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.090442 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved