asp.net用户角色管理

原创 2011年01月13日 12:09:00

 大部分web系统均有用户角色管理,根据用户的角色(权限)允许或拒绝用户访问某个页面,在这我实现了一个管理三类用户的Demo,游客无访问权 限,管理员(角色为manger)登录后可访问manger文件夹下的aspx页面,普通用户(角色为member)登录后可访问member文件夹夹下 了文件。

      1、数据库为SQL Server2005,数据库名:UsersManger,数据表Users。

在web.config中配置连接字符串

<connectionStrings>
  <add name="strConn" connectionString="Server=(local)/SQLEXPRESS;DataBase=UsersManger;Integrated Security=SSPI;"/>
 </connectionStrings>

asp.net用户角色管理 - star - 教育技术
 2、解决方案的结构截图

asp.net用户角色管理 - star - 教育技术

大家可能对ASPNETDB.mdf数据库文件感到疑问,这是微软的实例数据之一,如果在系统中使用成员管理、角色管理等,这个数据库会自动添加到系统App_Data文件夹下。

3、在web.config文件中配置用户访问权限

使用Roles类实现用户角色功能时,首先需要在system.web配置节下设置:

<roleManager enabled="true" cacheRolesInCookie="true"/> 允许使用用户角色管理

(1)拒绝匿名用户即游客访问网站,如果访问跳转到Login.aspx登录页,在system.web配置节下设置:

<authentication mode="Forms">
   <forms defaultUrl="Default.aspx" loginUrl="Login.aspx" name=".APSXAUTH" protection="All" timeout="60"></forms>
  </authentication>
  <authorization>
   <deny users="?"/>
  </authorization>

(2)下面的配置内容表示只有在角色为manger的用户登录后才能访问manger文件下的aspx页面。

<location path="manger">
    <system.web>
      <authorization>
        <allow roles="manger"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

(3)下面的配置内容表示只有在角色为member的用户登录后才能访问manger文件下的aspx页面。
  <location path="member">
    <system.web>
      <authorization>
        <allow roles="member"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
 <system.web>

 4、登录页Login.aspx页面源码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">

<html xmlns=" http://www.w3.org/1999/xhtml ">
<head runat="server">
    <title>用户登录</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        用户名:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
        <br />
        <br />
        密&nbsp;&nbsp;&nbsp; 码:<asp:TextBox ID="txtUserPassword" runat="server"
            TextMode="Password"></asp:TextBox>
        <br />
        <br />
        用户类型:<asp:DropDownList ID="ddlUserRole" runat="server">
            <asp:ListItem Selected="True" Value="selectRole">请选择</asp:ListItem>
            <asp:ListItem Value="manger">管理员</asp:ListItem>
            <asp:ListItem Value="member">普通用户</asp:ListItem>
        </asp:DropDownList>
        <br />
        <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <asp:Button ID="btnLogin" runat="server" onclick="btnLogin_Click" Text="登录" />
    </div>
    </form>
</body>
</html>

5、单击登录按钮事件代码在(Login.aspx.cs)中

进行数据库操作,导入命名空间:

using System.Data.SqlClient;

protected void btnLogin_Click(object sender, EventArgs e)
    {
        string UserName = txtUserName.Text.Trim().ToString();
        string UserPassword = txtUserPassword.Text.Trim().ToString();
        string UserRole = ddlUserRole.SelectedItem.Value.ToString();
        SqlConnection Conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["strConn"].ToString());
        Conn.Open();
        string sqlLogin = "select count(*) from Users where UserName='" + UserName + "' and UserPassword='" + UserPassword + "'";
        if (UserRole == "manger")//如果选择管理员
        {
            sqlLogin += "and UserRole='" + UserRole + "'";
            SqlCommand Cmd = new SqlCommand(sqlLogin, Conn);
            int result = Convert.ToInt32(Cmd.ExecuteScalar());
            if (result > 0)//管理员用户存在
            {
                if (Roles.RoleExists(UserRole))//判断该用户角色是否已经存在
                {
                    FormsAuthentication.RedirectFromLoginPage(UserName, false);//登录主页或跳转到刚刚请求的页面
                }
                else
                {
                    Roles.CreateRole(UserRole);//该用户还没创建角色,则创建该角色
                    Roles.AddUserToRole(UserName, UserRole);//添加该用户到指定的角色
                    FormsAuthentication.RedirectFromLoginPage(UserName, false);//登录主页或跳转到刚刚请求的页面
                }
            }
            else
            {
                Response.Write("用户名或密码错误!");
            }
            Conn.Close();
        }
        else if (UserRole == "member")
        {
            sqlLogin += "and UserRole='" + UserRole + "'";
            SqlCommand Cmd = new SqlCommand(sqlLogin, Conn);
            int result = Convert.ToInt32(Cmd.ExecuteScalar());
            if (result > 0)
            {
                if (Roles.RoleExists(UserRole))
                {
                    Roles.CreateRole(UserRole);
                    Roles.AddUserToRole(UserName, UserRole);
                    FormsAuthentication.RedirectFromLoginPage(UserName, false);
                }
                FormsAuthentication.RedirectFromLoginPage(UserName, false);
            }
            else
            {
                Response.Write("用户名或密码错误!");
            }
            Conn.Close();
        }
    }

6、其他页面基本上没有什么内容,只是用于测试,其中登录还有一些因素需要考虑,这里主要是说明如何使用Forms验证并结合Roles用户角色管理类来实现角色管理。

        这是我做的一个用户角色管理的Demo,希望对学习asp.net的朋友有所帮助,如果有什么问题或更好的解决方案,大家可以交流交流。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

.NET三层构架开发实例

三层 技术 实例

七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理

实验22——添加页脚 在本实验中,我们会在Employee 页面添加页脚,通过本实验理解分部视图。 什么是“分部视图”? 从逻辑上看,分部视图是一种可重用的视图,不会直接显示,包含于...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理

本文主要介绍了ASP.NET MVC中页眉页脚的添加和Layout页面的使用,并实现了用户角色分配及Action Filter的使用

七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理

七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理

ASP.Net 创建用户和角色组等

1. WebConfig 配置    用户基本信息需要配置Membership节点,位于下 <add name="SqlProvider" ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)