实例说明asp.net中的简单角色权限控制

权限控制在信息管理中属于基本功能,权限控制中其中以Window权限为模型的角色用户(也称用户组用户)模型使用较多。本文以网站管理后台权限控制为例简要说明。

角色表+用户表,其中Hope_T_User(用户)中的User_RoleId关联Hope_T_Role(角色)的Role_Id,表中字段均为简单常见英文,不作详解。

主要思路是使用公共类在其中根据角色得出其越权时的操作,然后后台所有需要验证权限的页面均继承此类,使用相应参数判断角色以做相应操作。

公共类:AdminPermission

ContractedBlock.gif ExpandedBlockStart.gif Code
  1
  2
  3ExpandedBlockStart.gifContractedBlock.gif    /**//// <summary>
  4    /// AdminPermission角色权限验证类
  5    /// </summary>

  6    public class AdminPermission : System.Web.UI.Page
  7ExpandedBlockStart.gifContractedBlock.gif    {
  8        Hope.BLL.Hope_T_Role bllRole = new Hope.BLL.Hope_T_Role();
  9        protected void CheckUserPermission( enumRole objEnumRole )
 10ExpandedSubBlockStart.gifContractedSubBlock.gif        {
 11            bool isAllowAccess=false;//是否允许访问
 12            if (Session["HopeUser"== null)
 13ExpandedSubBlockStart.gifContractedSubBlock.gif            {
 14                isAllowAccess = false;
 15            }
//Session不存在时
 16            Hope.Model.Hope_T_User objUser= (Hope.Model.Hope_T_User)Session["HopeUser"];
 17            int roleId=0;
 18            if (objUser != null)
 19ExpandedSubBlockStart.gifContractedSubBlock.gif            {
 20                roleId = Convert.ToInt32(objUser.User_RoleId);
 21            }

 22            Hope.Model.Hope_T_Role role = bllRole.GetModel(roleId);
 23
 24            if (role == null)
 25ExpandedSubBlockStart.gifContractedSubBlock.gif            {
 26                isAllowAccess = false;
 27            }

 28            else
 29ExpandedSubBlockStart.gifContractedSubBlock.gif            {
 30                switch (objEnumRole)
 31ExpandedSubBlockStart.gifContractedSubBlock.gif                {
 32ContractedSubBlock.gifExpandedSubBlockStart.gif                    #region
 33                    case (enumRole.Role_PostArticle):
 34                        if (role.Role_PostArticle != "1")
 35                            isAllowAccess = false;
 36                        else
 37                            isAllowAccess = true;
 38                        break;
 39                    case (enumRole.Role_ManageArticle):
 40                        if (role.Role_ManageArticle != "1")
 41                            isAllowAccess = false;
 42                        else
 43                            isAllowAccess = true;
 44                        break;
 45                    case (enumRole.Role_ManageInfo):
 46                        if (role.Role_ManageInfo != "1")
 47                            isAllowAccess = false;
 48                        else
 49                            isAllowAccess = true;
 50                        break;
 51                    case (enumRole.Role_ManageLink):
 52                        if (role.Role_ManageLink != "1")
 53                            isAllowAccess = false;
 54                        else
 55                            isAllowAccess = true;
 56                        break;
 57                    case (enumRole.Role_ManageLog):
 58                        if (role.Role_ManageLog != "1")
 59                            isAllowAccess = false;
 60                        else
 61                            isAllowAccess = true;
 62                        break;
 63                    case (enumRole.Role_ManageRole):
 64                        if (role.Role_ManageRole != "1")
 65                            isAllowAccess = false;
 66                        else
 67                            isAllowAccess = true;
 68                        break;
 69                    case (enumRole.Role_ManageSystem):
 70                        if (role.Role_ManageSystem != "1")
 71                            isAllowAccess = false;
 72                        else
 73                            isAllowAccess = true;
 74                        break;
 75                    case (enumRole.Role_ManageUser):
 76                        if (role.Role_ManageUser != "1")
 77                            isAllowAccess = false;
 78                        else
 79                            isAllowAccess = true;
 80                        break;
 81                    case (enumRole.Role_ManageVote):
 82                        if (role.Role_ManageVote != "1")
 83                            isAllowAccess = false;
 84                        else
 85                            isAllowAccess = true;
 86                        break;
 87                    case (enumRole.Role_ManageAd):
 88                        if (role.Role_ManageAd != "1")
 89                            isAllowAccess = false;
 90                        else
 91                            isAllowAccess = true;
 92                        break;
 93                    case (enumRole.Role_ManageDoc):
 94                        if (role.Role_ManageDoc != "1")
 95                            isAllowAccess = false;
 96                        else
 97                            isAllowAccess = true;
 98                        break;
 99                    case (enumRole.Role_ManageRate):
100                        if (role.Role_ManageRate != "1")
101                            isAllowAccess = false;
102                        else
103                            isAllowAccess = true;
104                        break;
105                    #endregion

106                }

107            }

108            if (isAllowAccess == false)
109ExpandedSubBlockStart.gifContractedSubBlock.gif            {
110                Response.Write("<script type=\"text/javascript\">alert(\"抱歉,您无权限查看此页" + role.Role_ManageAd + "。\");return false;</script>");
111            }

112        }

113    }

114ExpandedBlockStart.gifContractedBlock.gif    /**//// <summary>
115    /// 角色权限
116    /// </summary>

117    public enum enumRole
118ExpandedBlockStart.gifContractedBlock.gif    {
119ContractedSubBlock.gifExpandedSubBlockStart.gif        #region
120ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
121        /// 是否允许发布文章
122        /// </summary>

123        Role_PostArticle=1,
124ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
125        /// 是否允许管理文章
126        /// </summary>

127        Role_ManageArticle,
128ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
129        /// 是否允许管理链接
130        /// </summary>

131        Role_ManageLink,
132ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
133        /// 是否允许管理附属信息
134        /// </summary>

135        Role_ManageInfo,
136ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
137        /// 是否允许管理日志
138        /// </summary>

139        Role_ManageLog,
140ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
141        /// 是否允许管理系统
142        /// </summary>

143        Role_ManageSystem,
144ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
145        /// 是否允许管理投票
146        /// </summary>

147        Role_ManageVote,
148ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
149        /// 是否允许管理用户
150        /// </summary>

151        Role_ManageUser,
152ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
153        /// 是否允许管理角色
154        /// </summary>

155        Role_ManageRole,
156ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
157        /// 是否允许管理广告
158        /// </summary>

159        Role_ManageAd,
160ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
161        /// 管理下发文件
162        /// </summary>

163        Role_ManageDoc,
164ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
165        /// 管理利率
166        /// </summary>

167        Role_ManageRate
168        #endregion

169    }

170     
171

需要验证的页面中添加如下代码

 1  public   partial   class  manage_manage_user_add :AdminPermission // 继承公共类
 2  {
 3      protected   void  Page_Load( object  sender, EventArgs e)
 4      {
 5           if ( ! IsPostBack)
 6          {
 7              CheckUserPermission(enumRole.Role_ManageUser); // 验证权限
 8          }
 9      }
10       //
11  }

此角色权限模块为简单模块,可根据实际项目需求再对角色功能进行细化,使之成为角色-用户-角色功能(-单一用户功能)模型。

转载于:https://www.cnblogs.com/walkingp/archive/2009/10/15/1584092.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值