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(授权...
  • muzizongheng
  • muzizongheng
  • 2013年07月10日 15:42
  • 1643

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

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

asp.net完整权限管理系统Demo

  • 2009年05月22日 23:48
  • 212KB
  • 下载

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

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

asp.net用户角色管理

技术学习 角色管理
  • fengqingtao2008
  • fengqingtao2008
  • 2011年01月13日 12:09
  • 3662

MVC WebApi 用户权限及授权DEMO

  • 2017年10月24日 09:19
  • 102KB
  • 下载

ASP.NET MVC5 默认用户管理

在测试新建的MVC5程序的时候,点击注册,没有问题,但是点击登录就遇到错误,后来在网上搜索解决办法如下:                                     @Html.Ac...
  • liuguobo
  • liuguobo
  • 2016年03月03日 22:29
  • 1560

web项目用户角色管理

最近更新时间:2017年7月6日13:14:49     任何一个web项目,按照是否有会员(用户)登陆划分,可以分为有会员网站和无会员网站,无会员网站结构简单内容单一,有会员网站结构复杂内容丰富。...
  • wanshaobo888
  • wanshaobo888
  • 2017年07月06日 14:07
  • 399

ASP.NET用户登录模块代码

    1.验证用户登录;    public static bool ValidateUser(string UserName,string UserPwd)    {        bool Fl...
  • a497785609
  • a497785609
  • 2009年09月03日 10:51
  • 7761

ASP.NET文档管理系统(功能强大且实用)

ASP.NET文档管理系统(功能强大且实用),可以从中学习登录、操作日志,文档上传下载管理,审批流程及管理等等知识。...
  • yangyisen0713
  • yangyisen0713
  • 2016年09月29日 21:36
  • 8899
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:asp.net用户角色管理
举报原因:
原因补充:

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