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的朋友有所帮助,如果有什么问题或更好的解决方案,大家可以交流交流。

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

相关文章推荐

ASP.Net实现用户权限管理

一、 ASP.Net提供对于权限安全提供的技术Authentication(验证)         MembershipProvider (用保存的信息验证用户是 谁)Authorization(授权...

[NET]浅谈ASP.NET的权限管理和用户验证

浅谈ASP.NET的权限管理和用户验证        网站建设中,会碰到最常用的用户管理及操作权限设置验证,虽然这是很常见的一个管理操作,但要做得完善很不容易。最近参考了许多.NET方面的书,特别关心...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

ASP.NET 2.0角色及成员管理

成员管理一、 Membership 类   :   创建和删除用户, 检索用户信  ,生成随机密码 , 登录验证           创建新用户:try  {         Membership.C...
  • CJamie
  • CJamie
  • 2007年09月10日 09:28
  • 674

SQL Server2012如何开启数据库的远程连接?

最近用到SQL Server 2012的远程连接,整理如下: SQL Server默认是不允许远程连接的,如果想要在本地用SSMS连接远程服务器上的SQLServer2012数据库,需要确认以下环节...
  • zw_2011
  • zw_2011
  • 2013年05月01日 15:38
  • 6091

ASP.NET WEBAPI实现微信接入验证

ASP.NET WEBAPI实现微信接入验证首先你需要一个微信公众号,很重要的是你需要完成认证,这点非常重要,如果不认证优先功能无法实现。 当你完成公众号的基本设定后,我们需要为开发做第一件事情:基...

用户,角色,功能管理模块(asp.net)

  • 2007年08月27日 12:02
  • 689KB
  • 下载

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明

ASP.NET MVC+EF框架+EasyUI实现权限管系列   (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装...
  • txqqnet
  • txqqnet
  • 2013年10月11日 14:12
  • 800

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

本文主要介绍了ASP.NET MVC中页眉页脚的添加和Layout页面的使用,并实现了用户角色分配及Action Filter的使用...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net用户角色管理
举报原因:
原因补充:

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