角色表+用户表,其中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);//验证权限 
} 
} 
//… 
} 
此角色权限模块为简单模块,可根据实际项目需求再对角色功能进行细化,使之成为角色-用户-角色功能(-单一用户功能)模型。
您可能感兴趣的文章:
