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

主要思路是使用公共类在其中根据角色得出其越权时的操作,然后后台所有需要验证权限的页面均继承此类,使用相应参数判断角色以做相应操作。
公共类:AdminPermission 复制代码 代码如下: /// <summary> /// AdminPermission角色权限验证类 /// </summary> public class AdminPermission : System.Web.UI.Page { Hope.BLL.Hope_T_Role bllRole = new Hope.BLL.Hope_T_Role(); protected void CheckUserPermission( enumRole objEnumRole ) { bool isAllowAccess=false;//是否允许访问 if (Session["HopeUser"] == null) { isAllowAccess = false; }//Session不存在时 Hope.Model.Hope_T_User objUser= (Hope.Model.Hope_T_User)Session["HopeUser"]; int roleId=0; if (objUser != null) { roleId = Convert.ToInt32(objUser.User_RoleId); } Hope.Model.Hope_T_Role role = bllRole.GetModel(roleId);
if (role == null) { isAllowAccess = false; } else { switch (objEnumRole) { #region case (enumRole.Role_PostArticle): if (role.Role_PostArticle != "1") isAllowAccess = false; else isAllowAccess = true; break; case (enumRole.Role_ManageArticle): if (role.Role_ManageArticle != "1") isAllowAccess = false; else isAllowAccess = true; break; case (enumRole.Role_ManageInfo): if (role.Role_ManageInfo != "1") isAllowAccess = false; else isAllowAccess = true; break; case (enumRole.Role_ManageLink): if (role.Role_ManageLink != "1") isAllowAccess = false; else isAllowAccess = true; break; case (enumRole.Role_ManageLog): if (role.Role_ManageLog != "1") isAllowAccess = false; else isAllowAccess = true; break; case (enumRole.Role_ManageRole): if (role.Role_ManageRole != "1") isAllowAccess = false; else isAllowAccess = true; break; case (enumRole.Role_ManageSystem): if (role.Role_ManageSystem != "1") isAllowAccess = false; else isAllowAccess = true; break; case (enumRole.Role_ManageUser): if (role.Role_ManageUser != "1") isAllowAccess = false; else isAllowAccess = true; break; case (enumRole.Role_ManageVote): if (role.Role_ManageVote != "1") isAllowAccess = false; else isAllowAccess = true; break; case (enumRole.Role_ManageAd): if (role.Role_ManageAd != "1") isAllowAccess = false; else isAllowAccess = true; break; case (enumRole.Role_ManageDoc): if (role.Role_ManageDoc != "1") isAllowAccess = false; else isAllowAccess = true; break; case (enumRole.Role_ManageRate): if (role.Role_ManageRate != "1") isAllowAccess = false; else isAllowAccess = true; break; #endregion } } if (isAllowAccess == false) { Response.Write("<script type=\"text/javascript\">alert(\"抱歉,您无权限查看此页" + role.Role_ManageAd + "。\");return false;</script>"); } } } /**//// <summary> /// 角色权限 /// </summary> public enum enumRole { #region /**//// <summary> /// 是否允许发布文章 /// </summary> Role_PostArticle=1, /**//// <summary> /// 是否允许管理文章 /// </summary> Role_ManageArticle, /**//// <summary> /// 是否允许管理链接 /// </summary> Role_ManageLink, /**//// <summary> /// 是否允许管理附属信息 /// </summary> Role_ManageInfo, /**//// <summary> /// 是否允许管理日志 /// </summary> Role_ManageLog, /**//// <summary> /// 是否允许管理系统 /// </summary> Role_ManageSystem, /**//// <summary> /// 是否允许管理投票 /// </summary> Role_ManageVote, /**//// <summary> /// 是否允许管理用户 /// </summary> Role_ManageUser, /**//// <summary> /// 是否允许管理角色 /// </summary> Role_ManageRole, /**//// <summary> /// 是否允许管理广告 /// </summary> Role_ManageAd, /**//// <summary> /// 管理下发文件 /// </summary> Role_ManageDoc, /**//// <summary> /// 管理利率 /// </summary> Role_ManageRate #endregion }
需要验证的页面中添加如下代码 复制代码 代码如下: public partial class manage_manage_user_add :AdminPermission//继承公共类 { protected void Page_Load(object sender, EventArgs e) { if(!IsPostBack) { CheckUserPermission(enumRole.Role_ManageUser);//验证权限 } } //… } 此角色权限模块为简单模块,可根据实际项目需求再对角色功能进行细化,使之成为角色-用户-角色功能(-单一用户功能)模型。 |